On 2024-10-19 09:14, Alejandro Colomar wrote: ...
On Sat, Oct 19, 2024 at 10:25:52AM GMT, Bruno Haible wrote: ...
What I would therefore suggest — if we want to change Gnulib at all
regarding realloc — is to make
realloc (ptr, 0) with ptr != NULL
abort.
That would be bad. Programs that _need_ realloc(p,0) to work will have
to workaround it by rolling their own realloc() wrapper, which will most
likely contain bugs.
Perhaps some package maintainers will prefer Bruno's suggestion, while
some will prefer realloc(p,0) to have the traditional/BSD semantics
you're proposing. So we could have two new Gnulib modules, say
realloc-ptr-0-abort for Bruno's suggestion, and realloc-ptr-0-nonnull
for the traditional/BSD semantics.
I can work on developing realloc-ptr-0-nonnull and using it in some of
the packages I help maintain. That would help us move forward. I hope a
realloc-ptr-0-abort module isn't needed except perhaps briefly for
debugging.
If the tunable is added to glibc as Siddhesh is proposing, I suppose the
realloc-gnu module should be changed to behave more like
realloc-ptr-0-nonnull, as it's more convenient for package maintainers
to assume the realloc-ptr-0-nonnull behavior than to write code that can
work with either current or future (or ancient :-) glibc behavior.