* lib/xmalloc.c (xrealloc): If N is zero, call 'free' directly.
This avoids a leak on C99-based systems. See
<http://lists.gnu.org/archive/html/bug-gnulib/2011-03/msg00243.html>.
+2011-03-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ xmalloc: Do not leak if underlying realloc is C99 compatible.
+ * lib/xmalloc.c (xrealloc): If N is zero, call 'free' directly.
+ This avoids a leak on C99-based systems. See
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-03/msg00243.html>.
+
2011-03-24 Eric Blake <eblake@redhat.com>
realloc: document portability problem
void *
xrealloc (void *p, size_t n)
{
+ if (!n)
+ {
+ /* The GNU and C99 realloc behaviors disagree here. Act like
+ GNU, even if the underlying realloc is C99. */
+ free (p);
+ return NULL;
+ }
+
p = realloc (p, n);
- if (!p && n != 0)
+ if (!p)
xalloc_die ();
return p;
}