aboutsummaryrefslogtreecommitdiff
path: root/include/core_mem.h
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2024-09-13 09:35:34 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2024-09-18 23:06:08 -0400
commitb7251ce3bf65bcbec7ecbb98a0eb0b3c9abde507 (patch)
tree120eac93d20476ed344b2b188f262ec86f1cc38a /include/core_mem.h
parent9691ccf51b3efd8113e9620c4afa8b5382d7f161 (diff)
downloadstasis-b7251ce3bf65bcbec7ecbb98a0eb0b3c9abde507.tar.gz
Move guard_ macros to core_mem.h
* Move core_mem.h below config.h
Diffstat (limited to 'include/core_mem.h')
-rw-r--r--include/core_mem.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/core_mem.h b/include/core_mem.h
new file mode 100644
index 0000000..ef07a00
--- /dev/null
+++ b/include/core_mem.h
@@ -0,0 +1,18 @@
+//
+// Created by jhunk on 9/13/24.
+//
+
+#ifndef STASIS_CORE_MEM_H
+#define STASIS_CORE_MEM_H
+
+#define guard_runtime_free(X) do { if (X) { runtime_free(X); X = NULL; } } while (0)
+#define guard_strlist_free(X) do { if ((*X)) { strlist_free(X); (*X) = NULL; } } while (0)
+#define guard_free(X) do { if (X) { free(X); X = NULL; } } while (0)
+#define GENERIC_ARRAY_FREE(ARR) do { \
+ for (size_t ARR_I = 0; ARR && ARR[ARR_I] != NULL; ARR_I++) { \
+ guard_free(ARR[ARR_I]); \
+ } \
+ guard_free(ARR); \
+} while (0)
+
+#endif //STASIS_CORE_MEM_H