aboutsummaryrefslogtreecommitdiff
path: root/include/core_mem.h
blob: ef07a001b2e9e2f6b4a2c2de7c58272684a30018 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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