diff options
author | phk <phk@FreeBSD.org> | 2001-11-17 10:57:04 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2001-11-17 10:57:04 +0000 |
commit | 30e4ff53d373d7acbc475e464227fe4f341ba0dd (patch) | |
tree | 44a9d7e4e59e43446a2f45dc5cbd71a4942cdbfa /lib/libc/stdlib | |
parent | 86ed17d675cb503ddb3f71f8b6f7c3af530bb29a (diff) | |
download | FreeBSD-src-30e4ff53d373d7acbc475e464227fe4f341ba0dd.zip FreeBSD-src-30e4ff53d373d7acbc475e464227fe4f341ba0dd.tar.gz |
If 'VX' is given, realloc(foo,0) will bail, it shouldn't.
PR: 29376
Submitted by: Farooq Mela <fmela0@sm.socccd.cc.ca.us>
Diffstat (limited to 'lib/libc/stdlib')
-rw-r--r-- | lib/libc/stdlib/malloc.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/libc/stdlib/malloc.c b/lib/libc/stdlib/malloc.c index 999c9b5..5bfa4ee 100644 --- a/lib/libc/stdlib/malloc.c +++ b/lib/libc/stdlib/malloc.c @@ -1128,7 +1128,8 @@ free(void *ptr) void * realloc(void *ptr, size_t size) { - register void *r; + void *r; + int err = 0; THREAD_LOCK(); malloc_func = " in realloc():"; @@ -1154,13 +1155,15 @@ realloc(void *ptr, size_t size) r = ZEROSIZEPTR; } else if (!ptr) { r = imalloc(size); + err = (r == NULL); } else { r = irealloc(ptr, size); + err = (r == NULL); } UTRACE(ptr, size, r); malloc_active--; THREAD_UNLOCK(); - if (malloc_xmalloc && !r) + if (malloc_xmalloc && err) wrterror("out of memory\n"); return (r); } |