From: Jeff King Date: Thu, 26 Aug 2010 22:15:36 GMT Subject: Re: [PATCH] for-each-ref: fix objectname:short bug Message-ID: <20100826221536.GA10418@coredump.intra.peff.net> In-Reply-To: <1282858469-22116-1-git-send-email-jaysoffian@gmail.com> On Thu, Aug 26, 2010 at 05:34:29PM -0400, Jay Soffian wrote: > When objectname:short was introduced, it forgot to copy the result of > find_unique_abbrev. Because the result of find_unique_abbrev is a > pointer to static buffer, this resulted in the same value being > substituted in for each ref. Yuck. I can't believe neither Michael nor I noticed this on first review. > --- a/builtin/for-each-ref.c > +++ b/builtin/for-each-ref.c > @@ -228,7 +228,8 @@ static void grab_common_values(struct atom_value *val, int deref, struct object > v->s = s; > } > else if (!strcmp(name, "objectname:short")) { > - v->s = find_unique_abbrev(obj->sha1, DEFAULT_ABBREV); > + v->s = xstrdup(find_unique_abbrev(obj->sha1, > + DEFAULT_ABBREV)); Your fix looks correct. It obviously leaks, but then so does 99% of the rest of for-each-ref. -Peff