mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-27 11:43:34 +08:00
malloc: Simplify implementation of __malloc_assert
It is prudent not to run too much code after detecting heap corruption, and __fxprintf is really complex. The line number and file name do not carry much information, so it is not included in the error message. (__libc_message only supports %s formatting.) The function name and assertion should provide some context. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
This commit is contained in:
parent
8b84fb862c
commit
ac8047cdf3
@ -292,19 +292,14 @@
|
|||||||
# define __assert_fail(assertion, file, line, function) \
|
# define __assert_fail(assertion, file, line, function) \
|
||||||
__malloc_assert(assertion, file, line, function)
|
__malloc_assert(assertion, file, line, function)
|
||||||
|
|
||||||
extern const char *__progname;
|
_Noreturn static void
|
||||||
|
|
||||||
static void
|
|
||||||
__malloc_assert (const char *assertion, const char *file, unsigned int line,
|
__malloc_assert (const char *assertion, const char *file, unsigned int line,
|
||||||
const char *function)
|
const char *function)
|
||||||
{
|
{
|
||||||
(void) __fxprintf (NULL, "%s%s%s:%u: %s%sAssertion `%s' failed.\n",
|
__libc_message (do_abort, "\
|
||||||
__progname, __progname[0] ? ": " : "",
|
Fatal glibc error: malloc assertion failure in %s: %s\n",
|
||||||
file, line,
|
function, assertion);
|
||||||
function ? function : "", function ? ": " : "",
|
__builtin_unreachable ();
|
||||||
assertion);
|
|
||||||
fflush (stderr);
|
|
||||||
abort ();
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user