From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: "René Scharfe" <l.s.r@web.de>, "Git Mailing List" <git@vger.kernel.org>
Subject: Re: [PATCH 1/2] add macro REALLOCARRAY
Date: Wed, 17 Sep 2014 04:17:54 -0400 [thread overview]
Message-ID: <20140917081753.GC16200@peff.net> (raw)
In-Reply-To: <xmqqtx487nej.fsf@gitster.dls.corp.google.com>
On Mon, Sep 15, 2014 at 11:24:04AM -0700, Junio C Hamano wrote:
> 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
next prev parent reply other threads:[~2014-09-17 8:18 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-14 16:55 [PATCH 1/2] add macro REALLOCARRAY René Scharfe
2014-09-14 16:57 ` [PATCH 2/2] use REALLOCARRAY for changing the allocation size of arrays René Scharfe
2014-09-15 18:24 ` [PATCH 1/2] add macro REALLOCARRAY Junio C Hamano
2014-09-17 8:17 ` Jeff King [this message]
2014-09-16 3:04 ` Junio C Hamano
2014-09-16 18:52 ` René Scharfe
2014-09-16 18:56 ` [PATCH 1/2] add macro REALLOC_ARRAY René Scharfe
2014-09-24 7:32 ` Michael Haggerty
2014-09-24 17:59 ` Junio C Hamano
2014-09-24 19:27 ` René Scharfe
2014-09-16 18:56 ` [PATCH 2/2] use REALLOC_ARRAY for changing the allocation size of arrays René Scharfe
2014-09-24 18:47 ` Jonathan Nieder
2014-09-24 19:27 ` René Scharfe
2014-09-16 19:27 ` [PATCH 1/2] add macro REALLOCARRAY Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140917081753.GC16200@peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=l.s.r@web.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.