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

[PATCH 0/2] UNLEAK style fixes

From
Jeff King <peff@peff.net>
Date
Aug 13, 2020, 15:54 UTC
Message-ID
<20200813155426.GA896769@coredump.intra.peff.net>

Although we introduced UNLEAK() long ago, I don't know that anybody has really made a concerted effort to annotate enough variables to make running a leak-checker useful. So I haven't paid too much attention to its use.

But a few people have added some annotations, and I think some of them aren't great examples. So I decided to clean them up. This by definition has no impact on regular builds (since UNLEAK is a noop there), but even in leak-checking builds should give no behavior change.

Another category that I was tempted to change is when variables _could_ be freed, but we just don't bother to do so. E.g., at the end of bugreport.c, we have:

  UNLEAK(buffer);
  UNLEAK(report_path);
  return !!launch_editor(report_path.buf, NULL, NULL);

Using UNLEAK(report_path) makes sense; we can't free it because we're passing it to a function that runs until program end. But we _could_ free "buffer" here, which isn't otherwise used again (i.e., that could be strbuf_release() instead of UNLEAK).

But that does have a run-time cost (we'd actually free the memory, even though we could just exit and let the OS handle it). My guess is that it's not a measurable cost, and the code might be cleaner to actually clean up instead of sprinkling more UNLEAKs around. But until we're actually pushing forward with a real effort to get a leak-checker running clean, I don't see much point in doing one or the other.

(As a side note, if we want to declare UNLEAK() a failure because nobody cares enough to really use it, I'm OK with that, too).

  [1/2]: stop calling UNLEAK() before die()
  [2/2]: ls-remote: simplify UNLEAK() usage
 bugreport.c         | 4 +---
 builtin/ls-remote.c | 8 +++-----
 midx.c              | 8 ++------
 3 files changed, 6 insertions(+), 14 deletions(-)
-Peff
Next: Jeff King
Message 1 of 9 in “UNLEAK style fixes”
  1. 0/2 UNLEAK style fixesJeff King, Aug 13, 2020
  2. 1/2 stop calling UNLEAK() before die()Jeff King, Aug 13, 2020
  3. Derrick StoleeAug 13, 2020
  4. Jeff KingAug 14, 2020
  5. 2/2 ls-remote: simplify UNLEAK() usageJeff King, Aug 13, 2020
  6. Derrick StoleeAug 13, 2020
  7. Eric SunshineAug 13, 2020
  8. Jeff KingAug 14, 2020
  9. Eric SunshineAug 14, 2020

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.