git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] blame.c: fix garbled error message

From
LFLukas Fleischer <git@cryptocrack.de>
Date
Jan 12, 2015, 23:18 UTC
Message-ID
<20150112231849.4992.72982@typhoon.lan>
In-Reply-To
<xmqqzj9n623h.fsf@gitster.dls.corp.google.com>
On Mon, 12 Jan 2015 at 23:55:30, Junio C Hamano wrote:
Show 28 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
> 
> > Lukas Fleischer <git@cryptocrack.de> writes:
> >
> >> The helper functions prepare_final() and prepare_initial() return a
> >> pointer to a string that is a member of an object in the revs->pending
> >> array. This array is later rebuilt when running prepare_revision_walk()
> >> which potentially transforms the pointer target into a bogus string. Fix
> >> this by maintaining a copy of the original string.
> >>
> >> Signed-off-by: Lukas Fleischer <git@cryptocrack.de>
> >> ---
> >> The bug manifests when running `git blame HEAD^ -- nonexistent.file`.
> >
> > Before 1da1e07c (clean up name allocation in prepare_revision_walk,
> > 2014-10-15), these strings used to be non-volatile; they were instead
> > leaked more or less deliberately.  But these days, these strings are
> > cleared, so your patch is absolutely the right thing to do.
> >
> > Thanks for catching and fixing.  This fix needs to go to the 2.2.x
> > maintenance track.
> 
> Sigh, but not so fast.
> 
> With the patch applied on top of 1da1e07c (or the result merged to
> 'next' for that matter), I see test breakages in many places "git
> blame" is used, e.g. t7010.  Did you run the test suite?
> 
No, I didn't.
> This is because it is perfectly normal for prepare_final() to return
> NULL.  Unconditionally running xstrdup() would of course fail.
> [...]
Something like
    return final_commit_name ? xstrdup(final_commit_name) : NULL;

should work, though, right? Calling free() with a null pointer is fine, so there is nothing else to do here. You can either amend those two lines or wait for me to resubmit v2 of the patch tomorrow :)

Previous: Junio C Hamano
Message 19 of 19 in “blame.c: fix garbled error message”
  1. blame.c: fix garbled error messageLukas Fleischer, Jan 10, 2015
  2. Junio C HamanoJan 12, 2015
  3. Jeff KingJan 12, 2015
  4. Junio C HamanoJan 12, 2015
  5. Jeff KingJan 12, 2015
  6. Junio C HamanoJan 13, 2015
  7. Jeff KingJan 13, 2015
  8. 1/5 git-compat-util: add xstrdup_or_null helperJeff King, Jan 13, 2015
  9. Jonathan NiederJan 13, 2015
  10. Jeff KingJan 13, 2015
  11. 2/5 builtin/apply.c: use xstrdup_or_null instead of null_strdupJeff King, Jan 13, 2015
  12. 3/5 builtin/commit.c: use xstrdup_or_null instead of envdupJeff King, Jan 13, 2015
  13. 4/5 use xstrdup_or_null to replace ternary conditionalsJeff King, Jan 13, 2015
  14. 5/5 blame.c: fix garbled error messageJeff King, Jan 13, 2015
  15. Lukas FleischerJan 14, 2015
  16. Junio C HamanoJan 14, 2015
  17. Jeff KingJan 14, 2015
  18. Junio C HamanoJan 14, 2015
  19. Lukas FleischerJan 12, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.