summaryrefslogtreecommitdiff
path: root/lib/libc/stdlib/malloc.c
diff options
context:
space:
mode:
authorjtc <jtc@NetBSD.org>1996-01-17 02:45:25 +0000
committerjtc <jtc@NetBSD.org>1996-01-17 02:45:25 +0000
commit03edaa24b7d665266a0de4e4ace397275f65c8c3 (patch)
treeeb296632bf8701216e368e88524a23bd0048e023 /lib/libc/stdlib/malloc.c
parente66e318757ebf088ca4a0184ce4cbd8f0a124258 (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.c8
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++;