summaryrefslogtreecommitdiff
path: root/libmisc/assert.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmisc/assert.c')
-rw-r--r--libmisc/assert.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/libmisc/assert.c b/libmisc/assert.c
new file mode 100644
index 0000000..fdd8154
--- /dev/null
+++ b/libmisc/assert.c
@@ -0,0 +1,30 @@
+/* libmisc/assert.c - More assertions
+ *
+ * Copyright (C) 2024-2025 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
+#define __lm_printf __lm_light_printf
+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