mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
For usages of assert() that are meant to persist in Release builds (when NDEBUG is defined), replace those usages with persistent alternatives
This commit is contained in:
parent
a603a76787
commit
ced6d20295
62 changed files with 299 additions and 294 deletions
37
src/debug.h
37
src/debug.h
|
@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
|
||||
#include <iostream>
|
||||
#include <exception>
|
||||
#include <assert.h>
|
||||
#include "gettime.h"
|
||||
|
||||
#if (defined(WIN32) || defined(_WIN32_WCE))
|
||||
|
@ -72,28 +73,38 @@ extern std::ostream dstream;
|
|||
extern std::ostream dstream_no_stderr;
|
||||
extern Nullstream dummyout;
|
||||
|
||||
/*
|
||||
Include assert.h and immediately undef assert so that it can't override
|
||||
our assert later on. leveldb/slice.h is a notable offender.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#undef assert
|
||||
/* Abort program execution immediately
|
||||
*/
|
||||
__NORETURN extern void fatal_error_fn(
|
||||
const char *msg, const char *file,
|
||||
unsigned int line, const char *function);
|
||||
|
||||
#define FATAL_ERROR(msg) \
|
||||
fatal_error_fn((msg), __FILE__, __LINE__, __FUNCTION_NAME)
|
||||
|
||||
#define FATAL_ERROR_IF(expr, msg) \
|
||||
((expr) \
|
||||
? fatal_error_fn((msg), __FILE__, __LINE__, __FUNCTION_NAME) \
|
||||
: (void)(0))
|
||||
|
||||
/*
|
||||
Assert
|
||||
sanity_check()
|
||||
Equivalent to assert() but persists in Release builds (i.e. when NDEBUG is
|
||||
defined)
|
||||
*/
|
||||
|
||||
__NORETURN extern void assert_fail(
|
||||
__NORETURN extern void sanity_check_fn(
|
||||
const char *assertion, const char *file,
|
||||
unsigned int line, const char *function);
|
||||
|
||||
#define ASSERT(expr)\
|
||||
((expr)\
|
||||
? (void)(0)\
|
||||
: assert_fail(#expr, __FILE__, __LINE__, __FUNCTION_NAME))
|
||||
#define SANITY_CHECK(expr) \
|
||||
((expr) \
|
||||
? (void)(0) \
|
||||
: sanity_check_fn(#expr, __FILE__, __LINE__, __FUNCTION_NAME))
|
||||
|
||||
#define sanity_check(expr) SANITY_CHECK(expr)
|
||||
|
||||
#define assert(expr) ASSERT(expr)
|
||||
|
||||
void debug_set_exception_handler();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue