diff options
author | Jeff King <peff@peff.net> | 2016-09-26 14:00:29 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-09-26 20:46:41 +0200 |
commit | 16ddcd403bdd74f47f3ae1a7e58a01e36e54a7d7 (patch) | |
tree | b4d5e1936a7d013ef20107a1e4901650ea38d1df /sha1-array.c | |
parent | get_short_sha1: mark ambiguity error for translation (diff) | |
download | git-16ddcd403bdd74f47f3ae1a7e58a01e36e54a7d7.tar.xz git-16ddcd403bdd74f47f3ae1a7e58a01e36e54a7d7.zip |
sha1_array: let callbacks interrupt iteration
The callbacks for iterating a sha1_array must have a void
return. This is unlike our usual for_each semantics, where
a callback may interrupt iteration and have its value
propagated. Let's switch it to the usual form, which will
enable its use in more places (e.g., where we are replacing
an existing iteration with a different data structure).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'sha1-array.c')
-rw-r--r-- | sha1-array.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sha1-array.c b/sha1-array.c index 6f4a2246c9..af1d7d560d 100644 --- a/sha1-array.c +++ b/sha1-array.c @@ -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; } |