diff options
Diffstat (limited to 'sha1-array.c')
-rw-r--r-- | sha1-array.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sha1-array.c b/sha1-array.c index 6f4a2246c9..c1cc25cd95 100644 --- a/sha1-array.c +++ b/sha1-array.c @@ -16,7 +16,7 @@ static int void_hashcmp(const void *a, const void *b) static void sha1_array_sort(struct sha1_array *array) { - qsort(array->sha1, array->nr, sizeof(*array->sha1), void_hashcmp); + QSORT(array->sha1, array->nr, void_hashcmp); array->sorted = 1; } @@ -42,7 +42,7 @@ void sha1_array_clear(struct sha1_array *array) array->sorted = 0; } -void sha1_array_for_each_unique(struct sha1_array *array, +int sha1_array_for_each_unique(struct sha1_array *array, for_each_sha1_fn fn, void *data) { @@ -52,8 +52,12 @@ void sha1_array_for_each_unique(struct sha1_array *array, sha1_array_sort(array); for (i = 0; i < array->nr; i++) { + int ret; if (i > 0 && !hashcmp(array->sha1[i], array->sha1[i-1])) continue; - fn(array->sha1[i], data); + ret = fn(array->sha1[i], data); + if (ret) + return ret; } + return 0; } |