Changeset - r27870:7c06e9e1a86b
[Not reviewed]
master
0 1 0
Patric Stout - 13 months ago 2023-09-08 10:11:37
truebrain@openttd.org
Fix: asserts unintentially being partially disabled in release-builds (#11268)

The nlohmann-json header file includes assert.h, which rudely resets
the assert macro to what that header thinks is right. As we set the
assert macro to be active with release builds when WITH_ASSERT is
active, this means that every file including nlohmann-json has their
asserts disabled (for release-builds) but files that don't do no.

Let's avoid this issue, by telling nlohmann to not include assert.h.
1 file changed with 4 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/stdafx.h
Show inline comments
 
@@ -391,12 +391,16 @@ void NORETURN AssertFailedError(int line
 
/* For non-debug builds with assertions enabled use the special assertion handler. */
 
#if defined(NDEBUG) && defined(WITH_ASSERT)
 
#	undef assert
 
#	define assert(expression) if (unlikely(!(expression))) AssertFailedError(__LINE__, __FILE__, #expression);
 
#endif
 

	
 
/* Define JSON_ASSERT, which is used by nlohmann-json. Otherwise the header-file
 
 * will re-include assert.h, and reset the assert macro. */
 
#define JSON_ASSERT(x) assert(x)
 

	
 
#if defined(MAX_PATH)
 
	/* It's already defined, no need to override */
 
#elif defined(PATH_MAX) && PATH_MAX > 0
 
	/* Use the value from PATH_MAX, if it exists */
 
#	define MAX_PATH PATH_MAX
 
#else
0 comments (0 inline, 0 general)