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;
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:
break;
}
if (status != MCHECK_OK)
- (*abortfunc) (status);
+ {
+ mcheck_used = 0;
+ (*abortfunc) (status);
+ mcheck_used = 1;
+ }
return status;
}
#endif
}
-static int mcheck_used;
-
int
mcheck (func)
void (*func) __P ((enum mcheck_status));