[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-gnulib] Re: gnulib/lib exclude.c,1.18,1.19
From: |
Jim Meyering |
Subject: |
[Bug-gnulib] Re: gnulib/lib exclude.c,1.18,1.19 |
Date: |
Thu, 16 Oct 2003 08:54:20 +0200 |
"Paul Eggert <address@hidden>" <address@hidden> wrote:
...
> (add_exclude, add_exclude_file): Use xnrealloc instead of rolling
> our own address arithmetic overflow checking.
...
> ! ex->exclude = xnrealloc (ex->exclude, ex->exclude_alloc,
> ! 2 * sizeof *ex->exclude);
> ! ex->exclude_alloc *= 2;
Hi Paul,
Thanks for doing that!
The above is becoming a common idiom.
For an idiom, I'm uncomfortable with the amount of duplication in
those two statements (three uses of V, and two each of N_ALLOC and
MULTIPLIER -- see below).
What do you think of writing something like this instead:
XNREALLOC (ex->exclude_alloc, ex->exclude, 2);
where XNREALLOC is defined like this:
/* Caution: N_ALLOC and V must be L-values. */
#define XNREALLOC (N_ALLOC, V, MULTIPLIER) \
do \
{ \
V = xnrealloc (V, N_ALLOC, (MULTIPLIER) * sizeof *(V)); \
N_ALLOC *= MULTIPLIER; \
} \
while (0)
Of course, that doesn't help if you prefer to increase by some
non-integer multiplier, but it should cover the majority of cases.
How about it?
- [Bug-gnulib] Re: gnulib/lib exclude.c,1.18,1.19,
Jim Meyering <=