about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--malloc/mcheck.c8
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 926e321aff..d5e1de39cd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2007-05-18  Ulrich Drepper  <drepper@redhat.com>
 
+	* malloc/mcheck.c (reallochook): If size==0, free the block.
+
 	* rt/tst-shm.c: Use fstat64 instead of fstat.
 
 	* sysdeps/unix/sysv/linux/i386/sync_file_range.S: Fix case where
diff --git a/malloc/mcheck.c b/malloc/mcheck.c
index 02379d219d..4e0d4b5b7d 100644
--- a/malloc/mcheck.c
+++ b/malloc/mcheck.c
@@ -1,5 +1,5 @@
 /* Standard debugging hooks for `malloc'.
-   Copyright (C) 1990-1997,99,2000,01,02 Free Software Foundation, Inc.
+   Copyright (C) 1990-1997,1999,2000-2002,2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written May 1989 by Mike Haertel.
 
@@ -264,6 +264,12 @@ memalignhook (__malloc_size_t alignment, __malloc_size_t size,
 static __ptr_t
 reallochook (__ptr_t ptr, __malloc_size_t size, const __ptr_t caller)
 {
+  if (size == 0)
+    {
+      freehook (ptr, caller);
+      return;
+    }
+
   struct hdr *hdr;
   __malloc_size_t osize;