diff options
| author | jtc <jtc@NetBSD.org> | 1996-01-17 02:45:25 +0000 |
|---|---|---|
| committer | jtc <jtc@NetBSD.org> | 1996-01-17 02:45:25 +0000 |
| commit | 03edaa24b7d665266a0de4e4ace397275f65c8c3 (patch) | |
| tree | eb296632bf8701216e368e88524a23bd0048e023 /lib/libc/stdlib/malloc.c | |
| parent | e66e318757ebf088ca4a0184ce4cbd8f0a124258 (diff) | |
The C standard says (about realloc) that "If size is zero and ptr is
not a null pointer, the object it points to is freed." Reported by
Peter Seebach in PR #1806.
Diffstat (limited to 'lib/libc/stdlib/malloc.c')
| -rw-r--r-- | lib/libc/stdlib/malloc.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/libc/stdlib/malloc.c b/lib/libc/stdlib/malloc.c index 0676f4780c0..4498a9fb6c5 100644 --- a/lib/libc/stdlib/malloc.c +++ b/lib/libc/stdlib/malloc.c @@ -1,4 +1,4 @@ -/* $NetBSD: malloc.c,v 1.5 1995/12/28 08:52:26 thorpej Exp $ */ +/* $NetBSD: malloc.c,v 1.6 1996/01/17 02:45:25 jtc Exp $ */ /* * Copyright (c) 1983 Regents of the University of California. @@ -37,7 +37,7 @@ #if 0 static char *sccsid = "from: @(#)malloc.c 5.11 (Berkeley) 2/23/91"; #else -static char *rcsid = "$NetBSD: malloc.c,v 1.5 1995/12/28 08:52:26 thorpej Exp $"; +static char *rcsid = "$NetBSD: malloc.c,v 1.6 1996/01/17 02:45:25 jtc Exp $"; #endif #endif /* LIBC_SCCS and not lint */ @@ -315,6 +315,10 @@ realloc(cp, nbytes) if (cp == NULL) return (malloc(nbytes)); + if (nbytes == 0) { + free (cp); + return NULL; + } op = (union overhead *)((caddr_t)cp - sizeof (union overhead)); if (op->ov_magic == MAGIC) { was_alloced++; |
