diff options
author | phk <phk@FreeBSD.org> | 1997-06-12 12:45:45 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 1997-06-12 12:45:45 +0000 |
commit | 88464dd9dcb625ec445f1186065f9fc8c898fe67 (patch) | |
tree | ba573277510782e74a0ae352d43a1d15245c31e6 /lib/libc/stdlib/malloc.c | |
parent | 628c1856e7672afd3ca295aab9a1f0a81ea4e0c5 (diff) | |
download | FreeBSD-src-88464dd9dcb625ec445f1186065f9fc8c898fe67.zip FreeBSD-src-88464dd9dcb625ec445f1186065f9fc8c898fe67.tar.gz |
Add yet an option, this time on how to deal with malloc(0) and realloc(ptr.0)
Prompted by: X11 & XFree86
Diffstat (limited to 'lib/libc/stdlib/malloc.c')
-rw-r--r-- | lib/libc/stdlib/malloc.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/libc/stdlib/malloc.c b/lib/libc/stdlib/malloc.c index 0327517..446f55d 100644 --- a/lib/libc/stdlib/malloc.c +++ b/lib/libc/stdlib/malloc.c @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $Id: malloc.c,v 1.23 1997/05/30 20:39:32 phk Exp $ + * $Id: malloc.c,v 1.24 1997/06/04 12:55:49 jb Exp $ * */ @@ -216,6 +216,9 @@ static int malloc_hint; /* xmalloc behaviour ? */ static int malloc_xmalloc; +/* sysv behaviour for malloc(0) ? */ +static int malloc_sysv; + /* zero fill ? */ static int malloc_zero; @@ -488,6 +491,8 @@ malloc_init () case 'J': malloc_junk = 1; break; case 'u': malloc_utrace = 0; break; case 'U': malloc_utrace = 1; break; + case 'v': malloc_sysv = 0; break; + case 'V': malloc_sysv = 1; break; case 'x': malloc_xmalloc = 0; break; case 'X': malloc_xmalloc = 1; break; case 'z': malloc_zero = 0; break; @@ -774,7 +779,9 @@ imalloc(size_t size) if (suicide) abort(); - if ((size + malloc_pagesize) < size) /* Check for overflow */ + if (malloc_sysv && !size) + result = 0; + else if ((size + malloc_pagesize) < size) /* Check for overflow */ result = 0; else if (size <= malloc_maxsize) result = malloc_bytes(size); @@ -1179,9 +1186,6 @@ realloc(void *ptr, size_t size) } if (!ptr) { r = imalloc(size); - } else if (ptr && !size) { - ifree(ptr); - r = 0; } else { r = irealloc(ptr, size); } |