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

Re: [PATCH 1/2] add macro REALLOCARRAY

From
Jeff King <peff@peff.net>
Date
Sep 17, 2014, 08:17 UTC
Message-ID
<20140917081753.GC16200@peff.net>
In-Reply-To
<xmqqtx487nej.fsf@gitster.dls.corp.google.com>
On Mon, Sep 15, 2014 at 11:24:04AM -0700, Junio C Hamano wrote:
Show 21 quoted lines
> René Scharfe <l.s.r@web.de> writes:
> 
> > The macro ALLOC_GROW manages several aspects of dynamic memory
> > allocations for arrays: It performs overprovisioning in order to avoid
> > reallocations in future calls, updates the allocation size variable,
> > multiplies the item size and thus allows users to simply specify the
> > item count, performs the reallocation and updates the array pointer.
> >
> > Sometimes this is too much.  Add the macro REALLOCARRAY, which only
> > takes care of the latter three points and allows users to specify the
> > number of items an array can store directly.  It can increase and
> > also decrease its size.  Using this macro avoids duplicating the
> > array pointer name and takes care of item sizes automatically.
> >
> > Signed-off-by: Rene Scharfe <l.s.r@web.de>
> > ---
> 
> Makes sense.  Originally I had two minor gripes against this
> 
>  #1 a macro that modifies its arguments feels a bit too magical, and
>     we would not want to overuse them.

This is probably getting into the too-magical territory, but I have long considered a macro like:

  #define ALLOC(x) (x) = xmalloc(sizeof(*x))

to prevent obvious size-mismatch errors. You could even call the macro NEW() if you wanted to be really disgusting. :)

I rejected it as probably too cutesy (and non-idiomatic for experienced C programmers), but I feel like this REALLOC_ARRAY is basically the same thing. I dunno. It does make the code a bit more readable, once you understand what the macro is doing.

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 4 of 14 in “add macro REALLOCARRAY”
  1. 1/2 add macro REALLOCARRAYRené Scharfe, Sep 14, 2014
  2. 2/2 use REALLOCARRAY for changing the allocation size of arraysRené Scharfe, Sep 14, 2014
  3. Junio C HamanoSep 15, 2014
  4. Jeff KingSep 17, 2014
  5. Junio C HamanoSep 16, 2014
  6. René ScharfeSep 16, 2014
  7. 1/2 add macro REALLOC_ARRAYRené Scharfe, Sep 16, 2014
  8. Michael HaggertySep 24, 2014
  9. Junio C HamanoSep 24, 2014
  10. René ScharfeSep 24, 2014
  11. 2/2 use REALLOC_ARRAY for changing the allocation size of arraysRené Scharfe, Sep 16, 2014
  12. Jonathan NiederSep 24, 2014
  13. René ScharfeSep 24, 2014
  14. Junio C HamanoSep 16, 2014

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.