]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Use a function to print the assertion failed message (server: qc -380KB, dat -190KB...
authorterencehill <piuntn@gmail.com>
Sat, 9 Feb 2019 18:45:25 +0000 (19:45 +0100)
committerterencehill <piuntn@gmail.com>
Sat, 9 Feb 2019 18:45:25 +0000 (19:45 +0100)
qcsrc/lib/log.qh

index b751bfb2a836e8eb298e2201d50fd33f202f9386..4b4f7b6bd984945d961277ae148ced8dd864f4ad 100644 (file)
@@ -2,7 +2,10 @@
 
 #include "progname.qh"
 
-#define assert(expr, ...) _assert(LOG_SEVERE, expr, __VA_ARGS__)
+void print_assertfailed_severe(string expr);
+void print_assertfailed_fatal(string expr);
+
+#define assert(expr, ...) _assert(print_assertfailed_severe, expr, __VA_ARGS__)
 #define devassert(...) MACRO_BEGIN if (autocvar_developer) assert(__VA_ARGS__); MACRO_END
 
 #define assert_once(expr, ...) \
        MACRO_END
 #define devassert_once(...) MACRO_BEGIN if (autocvar_developer) assert_once(__VA_ARGS__); MACRO_END
 
-#define demand(expr, ...) _assert(LOG_FATAL, expr, __VA_ARGS__)
+#define demand(expr, ...) _assert(print_assertfailed_fatal, expr, __VA_ARGS__)
 #define devdemand(...) MACRO_BEGIN if (autocvar_developer) demand(__VA_ARGS__); MACRO_END
 
 #define _assert(f, expr, then) \
        MACRO_BEGIN \
                if (!(expr)) \
                { \
-                       f("assertion failed: `" #expr "`\n"); \
+                       f(#expr); \
                        then; \
                } \
        MACRO_END
@@ -111,3 +114,15 @@ noref bool autocvar_prvm_backtraceforwarnings;
                bt_cvar_set("developer", ftos(dev)); \
                bt_cvar_set("prvm_backtraceforwarnings", ftos(war)); \
        MACRO_END
+
+void print_assertfailed_severe(string expr)
+{
+       // this is inside a function to avoid expanding it on compilation everytime
+       LOG_SEVERE("assertion failed: `", expr, "`\n");
+}
+
+void print_assertfailed_fatal(string expr)
+{
+       // this is inside a function to avoid expanding it on compilation everytime
+       LOG_FATAL("assertion failed: `", expr, "`\n");
+}