From adef37445c9c4e1c134e9a2bd1ca8c70472ffb55 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 27 Jul 2001 05:01:11 +0000 Subject: (checkhdr): Disable mcheck before reporting an error. Don't run any tests if mcheck is disabled. --- malloc/mcheck.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'malloc/mcheck.c') diff --git a/malloc/mcheck.c b/malloc/mcheck.c index 8612c8cf29..a9993c8d9d 100644 --- a/malloc/mcheck.c +++ b/malloc/mcheck.c @@ -55,6 +55,8 @@ struct hdr It is only constructed if the pedantic testing is requested. */ static struct hdr *root; +static int mcheck_used; + /* Nonzero if pedentic checking of all blocks is requested. */ static int pedantic; @@ -81,6 +83,12 @@ checkhdr (hdr) const struct hdr *hdr; { enum mcheck_status status; + + if (!mcheck_used) + /* Maybe the mcheck used is disabled? This happens when we find + an error and report it. */ + return MCHECK_OK; + switch (hdr->magic ^ ((uintptr_t) hdr->prev + (uintptr_t) hdr->next)) { default: @@ -97,7 +105,11 @@ checkhdr (hdr) break; } if (status != MCHECK_OK) - (*abortfunc) (status); + { + mcheck_used = 0; + (*abortfunc) (status); + mcheck_used = 1; + } return status; } @@ -302,8 +314,6 @@ mabort (status) #endif } -static int mcheck_used; - int mcheck (func) void (*func) __P ((enum mcheck_status)); -- cgit v1.2.3