summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/sanity.h14
-rw-r--r--src/thread.c9
2 files changed, 12 insertions, 11 deletions
diff --git a/src/sanity.h b/src/sanity.h
index be77eef..cc8043f 100644
--- a/src/sanity.h
+++ b/src/sanity.h
@@ -8,16 +8,18 @@
#ifndef BFS_SANITY_H
#define BFS_SANITY_H
+#include "bfs.h"
#include <stddef.h>
-// Call macro(ptr, size) or macro(ptr, sizeof(*ptr))
-#define SANITIZE_CALL(...) \
- SANITIZE_CALL_(__VA_ARGS__, )
+/** Get the default size for a sanitize macro call. */
+#define SANITIZE_SIZE_(ptr, size) \
+ BFS_VA_IF(size)(size)(sizeof(*ptr))
-#define SANITIZE_CALL_(macro, ptr, ...) \
- SANITIZE_CALL__(macro, ptr, __VA_ARGS__ sizeof(*(ptr)), )
+// Call macro(ptr, size) or macro(ptr, sizeof(*ptr))
+#define SANITIZE_CALL(macro, ptr, ...) \
+ SANITIZE_CALL_(macro, ptr, SANITIZE_SIZE_(ptr, __VA_ARGS__))
-#define SANITIZE_CALL__(macro, ptr, size, ...) \
+#define SANITIZE_CALL_(macro, ptr, size) \
macro(ptr, size)
#if __SANITIZE_ADDRESS__
diff --git a/src/thread.c b/src/thread.c
index b3604f8..8607bca 100644
--- a/src/thread.c
+++ b/src/thread.c
@@ -24,13 +24,12 @@
} \
} while (0)
-#define THREAD_INFALLIBLE(...) \
- THREAD_INFALLIBLE_(__VA_ARGS__, 0, )
+#define THREAD_INFALLIBLE(expr, ...) \
+ THREAD_INFALLIBLE_(expr, BFS_VA_IF(__VA_ARGS__)(__VA_ARGS__)(0))
-#define THREAD_INFALLIBLE_(expr, allowed, ...) \
+#define THREAD_INFALLIBLE_(expr, allowed) \
int err = expr; \
- bfs_verify(err == 0 || err == allowed, "%s: %s", #expr, xstrerror(err)); \
- (void)0
+ bfs_verify(err == 0 || err == allowed, "%s: %s", #expr, xstrerror(err))
int thread_create(pthread_t *thread, const pthread_attr_t *attr, thread_fn *fn, void *arg) {
THREAD_FALLIBLE(pthread_create(thread, attr, fn, arg));