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

Re: [PATCH] fmt-merge-msg: avoid leaking strbuf in shortlog()

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 8, 2017, 18:37 UTC
Message-ID
<xmqqd13p83sb.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<1654a696-73d5-c9ef-0fc2-bd82aaf2cabb@web.de>
René Scharfe <l.s.r@web.de> writes:
Show 6 quoted lines
>> I'm not sure it's string-list's fault. Many callers (including this one)
>> ...
> The two modes (dup/nodup) make string_list code tricky.  Not sure
> how far we'd get with something simpler (e.g. an array of char pointers),
> but having the caller do all string allocations would make the code
> easier to analyze.
Yes.

It probably would have been more sensible if the API did not have two modes (instead, have the caller pass whatever string to be stored, *and* make the caller responsible for freeing them *if* it passed an allocated string).

For the push_refs_with_push() patch you sent, another possible fix would be to make cas_options a nodup kind so that the result of strbuf_detach() does not get an extra strdup to be lost when placed in cas_options. With the current string-list API that would not quite work, because freeing done in _release() is tied to the "dup/nodup" ness of the string list. I think there even is a codepath that initializes a string_list as nodup kind, stuffs string in it giving the ownership, and then flips it into dup kind just before calling _release() only to have it free the strings, or something silly/ugly like that.

In any case, the patch looks sensible. Thanks for plugging the leaks.

Previous: René ScharfeNext: Jeff King
Message 10 of 16 in “fmt-merge-msg: avoid leaking strbuf in shortlog()”
  1. fmt-merge-msg: avoid leaking strbuf in shortlog()René Scharfe, Dec 7, 2017
  2. Jeff KingDec 7, 2017
  3. René ScharfeDec 8, 2017
  4. Junio C HamanoDec 8, 2017
  5. René ScharfeDec 8, 2017
  6. Jeff KingDec 8, 2017
  7. Junio C HamanoDec 7, 2017
  8. Jeff KingDec 8, 2017
  9. René ScharfeDec 8, 2017
  10. Junio C HamanoDec 8, 2017
  11. Jeff KingDec 8, 2017
  12. René ScharfeDec 18, 2017
  13. Jeff KingDec 19, 2017
  14. René ScharfeDec 19, 2017
  15. Jeff KingDec 20, 2017
  16. Jeff KingDec 8, 2017

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.