From: Bert Wesarg Date: Mon, 30 Nov 2009 23:57:27 +0000 (+0100) Subject: get_ref_states: strdup entries and free util in stale list X-Git-Tag: v1.6.6-rc1~6^2 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=92f676fce7fb1e67cb10c7c7d0b5e7521ff829b4;p=git.git get_ref_states: strdup entries and free util in stale list The entries in states->stale list is filled in handle_one_branch() that is a call-back funcation to for_each_ref() using the callback parameter given to it. We need to strdup() the refnames (both the string list key and the value stored in util) for more permanent storage and free them when we are done. Signed-off-by: Bert Wesarg Signed-off-by: Junio C Hamano --- diff --git a/builtin-remote.c b/builtin-remote.c index 791662621..a5019397f 100644 --- a/builtin-remote.c +++ b/builtin-remote.c @@ -272,7 +272,9 @@ static int get_ref_states(const struct ref *remote_refs, struct ref_states *stat die("Could not get fetch map for refspec %s", states->remote->fetch_refspec[i]); - states->new.strdup_strings = states->tracked.strdup_strings = 1; + states->new.strdup_strings = 1; + states->tracked.strdup_strings = 1; + states->stale.strdup_strings = 1; for (ref = fetch_map; ref; ref = ref->next) { unsigned char sha1[20]; if (!ref->peer_ref || read_ref(ref->peer_ref->name, sha1)) @@ -768,7 +770,7 @@ static void clear_push_info(void *util, const char *string) static void free_remote_ref_states(struct ref_states *states) { string_list_clear(&states->new, 0); - string_list_clear(&states->stale, 0); + string_list_clear(&states->stale, 1); string_list_clear(&states->tracked, 0); string_list_clear(&states->heads, 0); string_list_clear_func(&states->push, clear_push_info);