summaryrefslogtreecommitdiffstats
path: root/ldid.cpp
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2015-09-27 18:53:45 -0700
committerJay Freeman (saurik) <saurik@saurik.com>2015-09-27 18:53:45 -0700
commiteff987d296c6ad358f4c848f29a1891b3a25f345 (patch)
tree6ddefe0819bc27b98ff993fff59b4f42a30d0f28 /ldid.cpp
parente6a376fc606bd28796dd1733af079d5a825c1b52 (diff)
downloadldid-eff987d296c6ad358f4c848f29a1891b3a25f345.tar.gz
ldid-eff987d296c6ad358f4c848f29a1891b3a25f345.tar.zst
ldid-eff987d296c6ad358f4c848f29a1891b3a25f345.zip
Allow more useful error messages in _assert macro.
Diffstat (limited to 'ldid.cpp')
-rw-r--r--ldid.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/ldid.cpp b/ldid.cpp
index 0cb8dd2..8c03ef6 100644
--- a/ldid.cpp
+++ b/ldid.cpp
@@ -51,15 +51,16 @@
#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; \
})