From d725fa14a22b0871fe5a90bcf922d0ac88a4b5b0 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Fri, 8 Sep 2023 12:11:37 +0200 Subject: [PATCH] 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. --- src/stdafx.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/stdafx.h b/src/stdafx.h index 6e19bb6393..9d952c106f 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -394,6 +394,10 @@ void NORETURN AssertFailedError(int line, const char *file, const char *expressi # 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