From e153be0be2fb8df6656292daab3fa59963c76737 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Tue, 13 Feb 2024 17:51:51 -0800 Subject: Let memory allocators trap by default when attempting to allocate beyond capacity. --- cassert/include/cassert.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 cassert/include/cassert.h (limited to 'cassert/include') diff --git a/cassert/include/cassert.h b/cassert/include/cassert.h new file mode 100644 index 0000000..3349b55 --- /dev/null +++ b/cassert/include/cassert.h @@ -0,0 +1,29 @@ +#pragma once + +#include // For convenience, bring in soft assertions with assert(). +#include + +// Allow the client to define their own LOGE() macro. +#ifndef LOGE +#include +#define LOGE(...) \ + { \ + fprintf(stderr, "[ASSERT] %s:%d: ", __FILE__, __LINE__); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, "\n"); \ + } +#endif // LOGE + +#define TRAP() raise(SIGTRAP) + +/// Unconditional hard assert. +#define FAIL(message) \ + LOGE(message); \ + TRAP(); + +/// Conditional hard assert. +#define ASSERT(condition) \ + if (!condition) { \ + LOGE("Assertion failed: " #condition) \ + TRAP(); \ + } -- cgit v1.2.3