mirror of
https://github.com/git/git.git
synced 2024-11-25 10:54:00 +08:00
for-each-ref: introduce 'ref_array_clear()'
Introduce and implement 'ref_array_clear()' which will free all allocated memory for 'ref_array'. Mentored-by: Christian Couder <christian.couder@gmail.com> Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr> Signed-off-by: Karthik Nayak <karthik.188@gmail.com> Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
215b565126
commit
8e33678a26
@ -927,6 +927,26 @@ static int grab_single_ref(const char *refname, const struct object_id *oid,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Free memory allocated for a ref_array_item */
|
||||
static void free_array_item(struct ref_array_item *item)
|
||||
{
|
||||
free((char *)item->symref);
|
||||
free(item->refname);
|
||||
free(item);
|
||||
}
|
||||
|
||||
/* Free all memory allocated for ref_array */
|
||||
void ref_array_clear(struct ref_array *array)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < array->nr; i++)
|
||||
free_array_item(array->items[i]);
|
||||
free(array->items);
|
||||
array->items = NULL;
|
||||
array->nr = array->alloc = 0;
|
||||
}
|
||||
|
||||
static int cmp_ref_sort(struct ref_sort *s, struct ref_array_item *a, struct ref_array_item *b)
|
||||
{
|
||||
struct atom_value *va, *vb;
|
||||
@ -1157,5 +1177,6 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
|
||||
maxcount = ref_cbdata.array.nr;
|
||||
for (i = 0; i < maxcount; i++)
|
||||
show_ref(ref_cbdata.array.items[i], format, quote_style);
|
||||
ref_array_clear(&ref_cbdata.array);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user