aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--malloc/hooks.c2
-rw-r--r--malloc/malloc.c21
3 files changed, 23 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index c0868ed..f47efd0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-09-09 Ulrich Drepper <drepper@redhat.com>
+
+ * malloc/hooks.c (top_check): Print top chunk corruption as normal
+ error message.
+
+ * malloc/malloc.c (malloc_printerr): Don't make informational
+ message look like error message.
+
2004-09-09 Andreas Jaeger <aj@suse.de>
* nscd/Makefile (CFLAGS-nscd_setup_thread.c): Set to -fpie.
diff --git a/malloc/hooks.c b/malloc/hooks.c
index 4de5582..8a94fd0 100644
--- a/malloc/hooks.c
+++ b/malloc/hooks.c
@@ -216,7 +216,7 @@ top_check()
if((char*)t + chunksize(t) == mp_.sbrk_base + main_arena.system_mem ||
t == initial_top(&main_arena)) return 0;
- malloc_printerr (check_action | 4, "malloc: top chunk is corrupt", NULL);
+ malloc_printerr (check_action, "malloc: top chunk is corrupt", t);
/* Try to set up a new top chunk. */
brk = MORECORE(0);
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 824b6cc..0d0990c 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -5453,13 +5453,20 @@ malloc_printerr(int action, const char *str, void *ptr)
}
struct iovec iov[3];
- iov[0].iov_base = (char *) "*** glibc detected *** ";
- iov[0].iov_len = strlen (iov[0].iov_base);
- iov[1].iov_base = (char *) str;
- iov[1].iov_len = strlen (str);
- iov[2].iov_base = cp;
- iov[2].iov_len = &buf[sizeof (buf) - 1] - cp;
- TEMP_FAILURE_RETRY (__writev (STDERR_FILENO, iov, 3));
+ int n = 0;
+ if ((action & 4) == 0)
+ {
+ iov[0].iov_base = (char *) "*** glibc detected *** ";
+ iov[0].iov_len = strlen (iov[0].iov_base);
+ ++n;
+ }
+ iov[n].iov_base = (char *) str;
+ iov[n].iov_len = strlen (str);
+ ++n;
+ iov[n].iov_base = cp;
+ iov[n].iov_len = &buf[sizeof (buf) - 1] - cp;
+ ++n;
+ TEMP_FAILURE_RETRY (__writev (STDERR_FILENO, iov, n));
}
if (action & 2)
abort ();