#include "defs.h"
#include "globals.h"
int
__nothing()
{
return 0;
}
/*
* Simple botch routine - writes directly to stderr. CAREFUL -- do not use
* printf because of the vile hack we use to redefine fputs with write for
* normal systems (i.e not super-pure ANSI)!
*/
int
__m_botch(s1, s2, p, is_end_ptr, filename, linenumber)
const char *s1, *s2;
univptr_t p;
const char *filename;
int linenumber, is_end_ptr;
{
static char linebuf[32]; /* Enough for a BIG linenumber! */
static int notagain = 0;
if (notagain == 0) {
/* Try to flush the trace file and unbuffer stderr */
if (_malloc_statsfile)
(void) fflush(_malloc_statsfile);
(void) setvbuf(stderr, (char *) 0, _IONBF, 0);
(void) sprintf(linebuf, " %d: ", linenumber);
(void) fputs("# memory corruption found, file ",
stderr);
(void) fputs(filename, stderr);
(void) fputs(", line ", stderr);
(void) fputs(linebuf, stderr);
(void) fputs(s1, stderr);
if (s2 && *s2) {
(void) fputs(" ", stderr);
(void) fputs(s2, stderr);
}
(void) fputs("\n", stderr);
(void) __m_prblock(p, is_end_ptr, stderr);
/*
* In case stderr is buffered and was written to before we
* tried to unbuffer it
*/
(void) fflush(stderr);
notagain++; /* just in case abort() tries to cleanup */
abort();
}
return 0; /* SHOULDNTHAPPEN */
}
syntax highlighted by Code2HTML, v. 0.9.1