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

Re: [PATCH] xrealloc: do not reuse pointer freed by zero-length realloc()

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Sep 3, 2020, 03:50 UTC
Message-ID
<20200903035008.GF4035286@google.com>
In-Reply-To
<xmqq3641ebep.fsf@gitster.c.googlers.com>
Junio C Hamano wrote:
> Jeff King <peff@peff.net> writes:
Show 14 quoted lines
>> If we do handle it up-front, then I think we'd actually want:
>>
>>   if (!size) {
>>           free(ptr);
>>           return xmalloc(0);
>>   }
>>
>> (i.e., to never return NULL for consistency with xmalloc() and
>> xcalloc()).
>
> Makes sense.  I suspect that this is optimizing for a wrong case,
> but in practice that should not matter.  Not having to worry about
> a request to resize to 0-byte in the remainder of the function is
> actually a plus for readability, I would say.

I agree with both points: if we were repeatedly shrinking and growing a buffer and cared about its performance, then we'd want the first version, and since we aren't, we should prefer this version that is more readable.

Thanks, Jonathan

Previous: Junio C HamanoNext: Andreas Schwab
Message 8 of 10 in “xrealloc: do not reuse pointer freed by zero-length realloc()”
  1. xrealloc: do not reuse pointer freed by zero-length realloc()Jeff King, Sep 1, 2020
  2. Derrick StoleeSep 1, 2020
  3. Jeff KingSep 1, 2020
  4. Derrick StoleeSep 1, 2020
  5. Junio C HamanoSep 1, 2020
  6. Jeff KingSep 2, 2020
  7. Junio C HamanoSep 2, 2020
  8. Jonathan NiederSep 3, 2020
  9. Andreas SchwabSep 1, 2020
  10. Junio C HamanoSep 1, 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.