diff options
Diffstat (limited to 'libmisc/assert.c')
-rw-r--r-- | libmisc/assert.c | 29 |
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 |