Code

Fix 'git show' on signed tag of signed tag of commit
authorThomas Rast <trast@student.ethz.ch>
Tue, 1 Jul 2008 09:47:04 +0000 (11:47 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 2 Jul 2008 00:05:42 +0000 (17:05 -0700)
The cmd_show loop resolves tags by showing them, then pointing the
object to the 'tagged' member.  However, this object is not fully
initialized; it only contains the SHA1.  (This resulted in a segfault
if there were two levels of tags.)  We apply parse_object to get a
full object.

Noticed by Kalle Olavi Niemitalo on IRC.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-log.c

index 9817d6fbeb69393ed321e71b6211a8630b982fab..9979e37f3823734c66f0b98eebf485a078e576bb 100644 (file)
@@ -360,7 +360,7 @@ int cmd_show(int argc, const char **argv, const char *prefix)
                                        t->tag,
                                        diff_get_color_opt(&rev.diffopt, DIFF_RESET));
                        ret = show_object(o->sha1, 1, &rev);
-                       objects[i].item = (struct object *)t->tagged;
+                       objects[i].item = parse_object(t->tagged->sha1);
                        i--;
                        break;
                }