summaryrefslogtreecommitdiff
path: root/libmisc/assert.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmisc/assert.c')
-rw-r--r--libmisc/assert.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/libmisc/assert.c b/libmisc/assert.c
new file mode 100644
index 0000000..69c0530
--- /dev/null
+++ b/libmisc/assert.c
@@ -0,0 +1,29 @@
+/* libmisc/assert.c - More assertions
+ *
+ * Copyright (C) 2024 Luke T. Shumaker <lukeshu@lukeshu.com>
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+#include <stdbool.h> /* for bool, true, false */
+
+#define LOG_NAME ASSERT
+#include <libmisc/log.h> /* for errorf() */
+
+#include <libmisc/assert.h>
+
+#ifndef NDEBUG
+void __assert_msg_fail(const char *expr,
+ const char *file, unsigned int line, const char *func,
+ const char *msg) {
+ static bool in_fail = false;
+ if (!in_fail) {
+ in_fail = true;
+ errorf("%s:%u:%s(): assertion \"%s\" failed%s%s",
+ file, line, func,
+ expr,
+ msg ? ": " : "", msg ?: "");
+ in_fail = false;
+ }
+ __lm_abort();
+}
+#endif