register_ref(): make a copy of the bad reference SHA-1

The lifetime of the sha1 parameter passed to an each_ref_fn callback is not guaranteed, so make a copy for later use. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Michael Haggerty committed May 25, 2013 at 11:08 UTC bf42772e38db8e758aa28a045e8cba88096a9fcc
1 file changed +3 -2
bisect.c
+3 -2
@@ -15,7 +15,7 @@
15 static struct sha1_array good_revs;
16 static struct sha1_array skipped_revs;
17
18 -static const unsigned char *current_bad_sha1;
18 +static unsigned char *current_bad_sha1;
19
20 static const char *argv_checkout[] = {"checkout", "-q", NULL, "--", NULL};
21 static const char *argv_show_branch[] = {"show-branch", NULL, NULL};
@@ -404,7 +404,8 @@ static int register_ref(const char *refname, const unsigned char *sha1,
404 int flags, void *cb_data)
405 {
406 if (!strcmp(refname, "bad")) {
407 - current_bad_sha1 = sha1;
407 + current_bad_sha1 = xmalloc(20);
408 + hashcpy(current_bad_sha1, sha1);
409 } else if (!prefixcmp(refname, "good-")) {
410 sha1_array_append(&good_revs, sha1);
411 } else if (!prefixcmp(refname, "skip-")) {