summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert Wesarg <bert.wesarg@googlemail.com>2009-12-01 00:57:27 +0100
committerJunio C Hamano <gitster@pobox.com>2009-12-01 12:26:32 -0800
commit92f676fce7fb1e67cb10c7c7d0b5e7521ff829b4 (patch)
tree38161ba5f7e6584a5c99b91a8916f4681b3d4978
parente160da7f60e67ee548472d907ede3291bbc2a79e (diff)
downloadgit-92f676fce7fb1e67cb10c7c7d0b5e7521ff829b4.tar.gz
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 <bert.wesarg@googlemail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin-remote.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/builtin-remote.c b/builtin-remote.c
index 7916626218..a5019397ff 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);