mdbx: добавлено MDBX_NORETURN к mdbx_panic() и mdbx_assert_fail().

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2022-09-28 14:06:55 +03:00
parent 375fa3a225
commit bcd5bad74a
2 changed files with 21 additions and 14 deletions

9
mdbx.h
View File

@ -1020,12 +1020,15 @@ LIBMDBX_API const char *mdbx_dump_val(const MDBX_val *key, char *const buf,
const size_t bufsize);
/** \brief Panics with message and causes abnormal process termination. */
LIBMDBX_API void mdbx_panic(const char *fmt, ...) MDBX_PRINTF_ARGS(1, 2);
MDBX_NORETURN LIBMDBX_API void mdbx_panic(const char *fmt, ...)
MDBX_PRINTF_ARGS(1, 2);
/** \brief Panics with asserton failed message and causes abnormal process
* termination. */
LIBMDBX_API void mdbx_assert_fail(const MDBX_env *env, const char *msg,
const char *func, unsigned line);
MDBX_NORETURN LIBMDBX_API void mdbx_assert_fail(const MDBX_env *env,
const char *msg,
const char *func,
unsigned line);
/** end of c_debug @} */
/** \brief Environment flags

View File

@ -247,13 +247,15 @@ __cold void mdbx_assert_fail(const MDBX_env *env, const char *msg,
#endif
}
while (1) {
#if defined(_WIN32) || defined(_WIN64)
if (IsDebuggerPresent())
DebugBreak();
FatalExit(ERROR_UNHANDLED_ERROR);
if (IsDebuggerPresent())
DebugBreak();
FatalExit(ERROR_UNHANDLED_ERROR);
#else
abort();
abort();
#endif
}
}
__cold void mdbx_panic(const char *fmt, ...) {
@ -267,16 +269,18 @@ __cold void mdbx_panic(const char *fmt, ...) {
(num < 1 || !message) ? "<troubles with panic-message preparation>"
: message;
while (1) {
#if defined(_WIN32) || defined(_WIN64)
OutputDebugStringA("\r\nMDBX-PANIC: ");
OutputDebugStringA(const_message);
if (IsDebuggerPresent())
DebugBreak();
FatalExit(ERROR_UNHANDLED_ERROR);
OutputDebugStringA("\r\nMDBX-PANIC: ");
OutputDebugStringA(const_message);
if (IsDebuggerPresent())
DebugBreak();
FatalExit(ERROR_UNHANDLED_ERROR);
#else
__assert_fail(const_message, "mdbx", 0, "panic");
abort();
__assert_fail(const_message, "mdbx", 0, "panic");
abort();
#endif
}
}
/*----------------------------------------------------------------------------*/