X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=object.c;h=98017bed8efb7eaf45d30a20c07a0870c4acceaa;hb=dcb11fc6225edbe2bd7af63eb550b739e7f4a074;hp=68f80b0b3d83e09f46bf3875c45647cee79772e8;hpb=27d7c8599b159862762e2bd121c22d516fb04e90;p=thirdparty%2Fgit.git diff --git a/object.c b/object.c index 68f80b0b3d..98017bed8e 100644 --- a/object.c +++ b/object.c @@ -412,15 +412,16 @@ void object_array_clear(struct object_array *array) } /* - * Return true iff array already contains an entry with name. + * Return true if array already contains an entry. */ -static int contains_name(struct object_array *array, const char *name) +static int contains_object(struct object_array *array, + const struct object *item, const char *name) { unsigned nr = array->nr, i; struct object_array_entry *object = array->objects; for (i = 0; i < nr; i++, object++) - if (!strcmp(object->name, name)) + if (item == object->item && !strcmp(object->name, name)) return 1; return 0; } @@ -432,7 +433,8 @@ void object_array_remove_duplicates(struct object_array *array) array->nr = 0; for (src = 0; src < nr; src++) { - if (!contains_name(array, objects[src].name)) { + if (!contains_object(array, objects[src].item, + objects[src].name)) { if (src != array->nr) objects[array->nr] = objects[src]; array->nr++;