From: Michael Haggerty Date: Mon, 12 Dec 2011 05:38:22 +0000 (+0100) Subject: create_ref_entry(): extract function from add_ref() X-Git-Tag: v1.7.9-rc0~35^2~1 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=cddc42587cbb37f8ff2f34b53550b5e331aa3aa5;p=git.git create_ref_entry(): extract function from add_ref() Separate the creation of the ref_entry from its addition to a ref_array. Signed-off-by: Michael Haggerty Signed-off-by: Junio C Hamano --- diff --git a/refs.c b/refs.c index 2e7bc0c5c..442b87c9f 100644 --- a/refs.c +++ b/refs.c @@ -53,28 +53,35 @@ static const char *parse_ref_line(char *line, unsigned char *sha1) return line; } -/* Add a ref_entry to the end of the ref_array (unsorted). */ -static void add_ref(const char *refname, const unsigned char *sha1, - int flag, int check_name, struct ref_array *refs, - struct ref_entry **new_entry) +static struct ref_entry *create_ref_entry(const char *refname, + const unsigned char *sha1, int flag, + int check_name) { int len; - struct ref_entry *entry; + struct ref_entry *ref; - /* Allocate it and add it in.. */ - len = strlen(refname) + 1; - entry = xmalloc(sizeof(struct ref_entry) + len); - hashcpy(entry->sha1, sha1); - hashclr(entry->peeled); if (check_name && check_refname_format(refname, REFNAME_ALLOW_ONELEVEL|REFNAME_DOT_COMPONENT)) die("Reference has invalid format: '%s'", refname); - memcpy(entry->name, refname, len); - entry->flag = flag; - if (new_entry) - *new_entry = entry; + len = strlen(refname) + 1; + ref = xmalloc(sizeof(struct ref_entry) + len); + hashcpy(ref->sha1, sha1); + hashclr(ref->peeled); + memcpy(ref->name, refname, len); + ref->flag = flag; + return ref; +} + +/* Add a ref_entry to the end of the ref_array (unsorted). */ +static void add_ref(const char *refname, const unsigned char *sha1, + int flag, int check_name, struct ref_array *refs, + struct ref_entry **new_ref) +{ + struct ref_entry *ref = create_ref_entry(refname, sha1, flag, check_name); + if (new_ref) + *new_ref = ref; ALLOC_GROW(refs->refs, refs->nr + 1, refs->alloc); - refs->refs[refs->nr++] = entry; + refs->refs[refs->nr++] = ref; } static int ref_entry_cmp(const void *a, const void *b)