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); const size_t bufsize);
/** \brief Panics with message and causes abnormal process termination. */ /** \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 /** \brief Panics with asserton failed message and causes abnormal process
* termination. */ * termination. */
LIBMDBX_API void mdbx_assert_fail(const MDBX_env *env, const char *msg, MDBX_NORETURN LIBMDBX_API void mdbx_assert_fail(const MDBX_env *env,
const char *func, unsigned line); const char *msg,
const char *func,
unsigned line);
/** end of c_debug @} */ /** end of c_debug @} */
/** \brief Environment flags /** \brief Environment flags

View File

@ -247,6 +247,7 @@ __cold void mdbx_assert_fail(const MDBX_env *env, const char *msg,
#endif #endif
} }
while (1) {
#if defined(_WIN32) || defined(_WIN64) #if defined(_WIN32) || defined(_WIN64)
if (IsDebuggerPresent()) if (IsDebuggerPresent())
DebugBreak(); DebugBreak();
@ -255,6 +256,7 @@ __cold void mdbx_assert_fail(const MDBX_env *env, const char *msg,
abort(); abort();
#endif #endif
} }
}
__cold void mdbx_panic(const char *fmt, ...) { __cold void mdbx_panic(const char *fmt, ...) {
va_list ap; va_list ap;
@ -267,6 +269,7 @@ __cold void mdbx_panic(const char *fmt, ...) {
(num < 1 || !message) ? "<troubles with panic-message preparation>" (num < 1 || !message) ? "<troubles with panic-message preparation>"
: message; : message;
while (1) {
#if defined(_WIN32) || defined(_WIN64) #if defined(_WIN32) || defined(_WIN64)
OutputDebugStringA("\r\nMDBX-PANIC: "); OutputDebugStringA("\r\nMDBX-PANIC: ");
OutputDebugStringA(const_message); OutputDebugStringA(const_message);
@ -278,6 +281,7 @@ __cold void mdbx_panic(const char *fmt, ...) {
abort(); abort();
#endif #endif
} }
}
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/