]> git.ipfire.org Git - thirdparty/git.git/blobdiff - oid-array.c
config: improve error message for boolean config
[thirdparty/git.git] / oid-array.c
index 8657a5cedfa68cbc3711d4b288e514978ff5b6df..8e1bcedc0cb56a11a4cb6d27d33b33ed39b02bfe 100644 (file)
@@ -14,8 +14,10 @@ static int void_hashcmp(const void *a, const void *b)
        return oidcmp(a, b);
 }
 
-static void oid_array_sort(struct oid_array *array)
+void oid_array_sort(struct oid_array *array)
 {
+       if (array->sorted)
+               return;
        QSORT(array->oid, array->nr, void_hashcmp);
        array->sorted = 1;
 }
@@ -28,8 +30,7 @@ static const unsigned char *sha1_access(size_t index, void *table)
 
 int oid_array_lookup(struct oid_array *array, const struct object_id *oid)
 {
-       if (!array->sorted)
-               oid_array_sort(array);
+       oid_array_sort(array);
        return sha1_pos(oid->hash, array->oid, array->nr, sha1_access);
 }
 
@@ -64,14 +65,10 @@ int oid_array_for_each_unique(struct oid_array *array,
 {
        size_t i;
 
-       if (!array->sorted)
-               oid_array_sort(array);
+       oid_array_sort(array);
 
-       for (i = 0; i < array->nr; i++) {
-               int ret;
-               if (i > 0 && oideq(array->oid + i, array->oid + i - 1))
-                       continue;
-               ret = fn(array->oid + i, data);
+       for (i = 0; i < array->nr; i = oid_array_next_unique(array, i)) {
+               int ret = fn(array->oid + i, data);
                if (ret)
                        return ret;
        }