On Mon, Sep 15, 2014 at 11:24:04AM -0700, Junio C Hamano wrote: > René Scharfe <l.s.r@xxxxxx> 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@xxxxxx> > > --- > > 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html