test-skeleton.c (xrealloc): Support realloc-as-free
Commit Message
On 06/23/2016 02:45 PM, Mike Frysinger wrote:
> On 23 Jun 2016 14:23, Florian Weimer wrote:
>> If the requested size is zero, realloc returns NULL, but the
>> deallocation is still successful.
>
> not exactly. realloc(NULL, 0) will return a valid pointer (much
> like malloc(NULL) will). code relies on this to generate cookies.
Ugh, right. At least our malloc behaves in this way. What about the
attached patch?
Thanks,
Florian
Comments
On 23 Jun 2016 14:54, Florian Weimer wrote:
> On 06/23/2016 02:45 PM, Mike Frysinger wrote:
> > On 23 Jun 2016 14:23, Florian Weimer wrote:
> >> If the requested size is zero, realloc returns NULL, but the
> >> deallocation is still successful.
> >
> > not exactly. realloc(NULL, 0) will return a valid pointer (much
> > like malloc(NULL) will). code relies on this to generate cookies.
>
> Ugh, right. At least our malloc behaves in this way. What about the
> attached patch?
OK
-mike
test-skeleton.c (xrealloc): Support realloc-as-free
If the requested size is zero, realloc returns NULL, but the
deallocation is still successful, unless the pointer is also
NULL, when realloc behaves as malloc (0).
2016-06-23 Florian Weimer <fweimer@redhat.com>
* test-skeleton.c (xrealloc): Support deallocation with n == 0.
@@ -109,10 +109,10 @@ __attribute__ ((unused))
static void *
xrealloc (void *p, size_t n)
{
- p = realloc (p, n);
- if (p == NULL)
+ void *result = realloc (p, n);
+ if (result == NULL && (n > 0 || p == NULL))
oom_error ("realloc", n);
- return p;
+ return result;
}
/* Write a message to standard output. Can be used in signal