]> git.saurik.com Git - ldid.git/commitdiff
Allow more useful error messages in _assert macro.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 28 Sep 2015 01:53:45 +0000 (18:53 -0700)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 28 Sep 2015 01:53:45 +0000 (18:53 -0700)
ldid.cpp

index 0cb8dd2f74108237a60b317768601ca7be143d92..8c03ef6a703c5efcd7d55cbcdf7235a89773ec39 100644 (file)
--- a/ldid.cpp
+++ b/ldid.cpp
     #line
 #define _assert__(line) \
     _assert___(line)
-#define _assert_(e) \
-    throw __FILE__ "(" _assert__(__LINE__) "): _assert(" e ")"
 
-#define _assert(expr) \
+#define _assert_(expr, format, ...) \
     do if (!(expr)) { \
-        fprintf(stderr, "%s(%u): _assert(%s); errno=%u\n", __FILE__, __LINE__, #expr, errno); \
-        _assert_(#expr); \
+        fprintf(stderr, "%s(%u): _assert(): " format "\n", __FILE__, __LINE__, ## __VA_ARGS__); \
+        throw __FILE__ "(" _assert__(__LINE__) "): _assert(" #expr ")"; \
     } while (false)
 
+#define _assert(expr) \
+    _assert_(expr, "%s", #expr)
+
 #define _syscall(expr) ({ \
     __typeof__(expr) _value; \
     do if ((long) (_value = (expr)) != -1) \
@@ -68,7 +69,7 @@
         case EINTR: \
             continue; \
         default: \
-            _assert(false); \
+            _assert_(false, "errno=%u", errno); \
     } while (true); \
     _value; \
 })