]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/debugging/debugging.h
changed ASSERT_MESSAGE and ERROR_MESSAGE macros to use proper
[xonotic/netradiant.git] / libs / debugging / debugging.h
index 93dd099588d1f7b40f920f14f18d0653e294538f..4c03e9d7b5d1fa665cdad7b6e3d4267b12f8ca4c 100644 (file)
@@ -39,8 +39,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #define DEBUGGER_BREAKPOINT() raise(SIGTRAP);
 #endif
 
-
-#define FILE_LINE __FILE__ ":" << __LINE__
+#define STR(x) #x
+#define STR2(x)        STR(x)
+#define FILE_LINE __FILE__ ":" STR2(__LINE__)
 
 #if defined(_DEBUG) || 1
 #define DEBUG_ASSERTS
@@ -111,23 +112,24 @@ inline DebugMessageHandler& globalDebugMessageHandler()
 #if defined(DEBUG_ASSERTS)
 
 /// \brief Sends a \p message to the current debug-message-handler text-output-stream if \p condition evaluates to false.
-#define ASSERT_MESSAGE(condition, message)\
+#define ASSERT_MESSAGE(condition, message) do{\
 if(!(condition))\
 {\
-  globalDebugMessageHandler().getOutputStream() << FILE_LINE << "\nassertion failure: " << message << "\n";\
+  globalDebugMessageHandler().getOutputStream() << FILE_LINE "\nassertion failure: " << message << "\n";\
   if(!globalDebugMessageHandler().handleMessage()) { DEBUGGER_BREAKPOINT(); }\
-} else\
+}} while(0)
 
 /// \brief Sends a \p message to the current debug-message-handler text-output-stream.
-#define ERROR_MESSAGE(message)\
-globalDebugMessageHandler().getOutputStream() << FILE_LINE << "\nruntime error: " << message << "\n";\
-if(!globalDebugMessageHandler().handleMessage()) { DEBUGGER_BREAKPOINT(); } else\
+#define ERROR_MESSAGE(message) do{\
+globalDebugMessageHandler().getOutputStream() << FILE_LINE "\nruntime error: " << message << "\n";\
+if(!globalDebugMessageHandler().handleMessage()) { DEBUGGER_BREAKPOINT(); }} while(0)
 
 #define ASSERT_NOTNULL(ptr) ASSERT_MESSAGE(ptr != 0, "pointer \"" #ptr "\" is null")
 
 #else
 
 #define ASSERT_MESSAGE(condition, message)
+#define ERROR_MESSAGE(message)
 #define ASSERT_NOTNULL(ptr)
 
 #endif