diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2015-09-27 18:53:45 -0700 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2015-09-27 18:53:45 -0700 |
commit | eff987d296c6ad358f4c848f29a1891b3a25f345 (patch) | |
tree | 6ddefe0819bc27b98ff993fff59b4f42a30d0f28 /ldid.cpp | |
parent | e6a376fc606bd28796dd1733af079d5a825c1b52 (diff) | |
download | ldid-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.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -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; \ }) |