diff options
author | Junio C Hamano <gitster@pobox.com> | 2018-04-25 07:28:59 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-04-25 07:28:59 +0300 |
commit | b3d6c48c5fbec88e96799c5463f7fdddaa19e9d5 (patch) | |
tree | 50ac07cd92713658d4ba35afcaa86854b751f582 /ref-filter.c | |
parent | cb6462fe7435657fbd905018e9b3c76f1d946832 (diff) | |
parent | 427cbc9dbfeb7c96bb1d5d9ace722353e2a5438e (diff) |
Merge branch 'jk/ref-array-push'
API clean-up aournd ref-filter code.
* jk/ref-array-push:
ref-filter: factor ref_array pushing into its own function
ref-filter: make ref_array_item allocation more consistent
ref-filter: use "struct object_id" consistently
Diffstat (limited to 'ref-filter.c')
-rw-r--r-- | ref-filter.c | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/ref-filter.c b/ref-filter.c index a847838484..ac82f9f21e 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -1828,15 +1828,30 @@ static const struct object_id *match_points_at(struct oid_array *points_at, return NULL; } -/* Allocate space for a new ref_array_item and copy the objectname and flag to it */ +/* + * Allocate space for a new ref_array_item and copy the name and oid to it. + * + * Callers can then fill in other struct members at their leisure. + */ static struct ref_array_item *new_ref_array_item(const char *refname, - const unsigned char *objectname, - int flag) + const struct object_id *oid) { struct ref_array_item *ref; + FLEX_ALLOC_STR(ref, refname, refname); - hashcpy(ref->objectname.hash, objectname); - ref->flag = flag; + oidcpy(&ref->objectname, oid); + + return ref; +} + +struct ref_array_item *ref_array_push(struct ref_array *array, + const char *refname, + const struct object_id *oid) +{ + struct ref_array_item *ref = new_ref_array_item(refname, oid); + + ALLOC_GROW(array->items, array->nr + 1, array->alloc); + array->items[array->nr++] = ref; return ref; } @@ -1931,12 +1946,11 @@ static int ref_filter_handler(const char *refname, const struct object_id *oid, * to do its job and the resulting list may yet to be pruned * by maxcount logic. */ - ref = new_ref_array_item(refname, oid->hash, flag); + ref = ref_array_push(ref_cbdata->array, refname, oid); ref->commit = commit; - - REALLOC_ARRAY(ref_cbdata->array->items, ref_cbdata->array->nr + 1); - ref_cbdata->array->items[ref_cbdata->array->nr++] = ref; + ref->flag = flag; ref->kind = kind; + return 0; } @@ -2169,11 +2183,11 @@ void show_ref_array_item(struct ref_array_item *info, putchar('\n'); } -void pretty_print_ref(const char *name, const unsigned char *sha1, +void pretty_print_ref(const char *name, const struct object_id *oid, const struct ref_format *format) { struct ref_array_item *ref_item; - ref_item = new_ref_array_item(name, sha1, 0); + ref_item = new_ref_array_item(name, oid); ref_item->kind = ref_kind_from_refname(name); show_ref_array_item(ref_item, format); free_array_item(ref_item); |