mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-09-06 13:41:39 +00:00
realloc-posix: realloc (..., 0) now returns nonnull
* lib/realloc.c (rpl_realloc): Simplify and tune by using HAVE_REALLOC_0_NONNULL and HAVE_MALLOC_PTRDIFF, and by having just one call to realloc instead of two. * lib/reallocarray.c (reallocarray): Simplify and tune by delegating the zero case to the revised realloc. * m4/eealloc.m4 (_AC_FUNC_REALLOC_IF): Since only eealloc uses this macro now, move its definition here ... * m4/realloc.m4: ... from here. (gl_FUNC_REALLOC_0_NONNULL): Also check that realloc (p, 0) returns nonnull. Require gl_FUNC_REALLOC_POSIX. Define HAVE_REALLOC_0_NONNULL. * m4/reallocarray.m4 (gl_FUNC_REALLOCARRAY): Also replace reallocarray if it returns a null pointer for size zero. * modules/eealloc (Files): Remove m4/realloc.m4. * modules/realloc-posix (Depends-on): Add extensions-aix. * modules/reallocarray (Files): Add m4/realloc.m4.
This commit is contained in:
@@ -33,12 +33,6 @@ reallocarray (void *ptr, size_t nmemb, size_t size)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Work around realloc glitch by treating a 0 size as if it were 1,
|
||||
to avoid undefined behavior in strict C23 platforms,
|
||||
and so that returning NULL is equivalent to failing. */
|
||||
if (nbytes == 0)
|
||||
nbytes = 1;
|
||||
|
||||
/* Call realloc, setting errno to ENOMEM on failure. */
|
||||
return realloc (ptr, nbytes);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user