diff options
author | EuAndreh <eu@euandre.org> | 2024-04-19 09:31:51 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-04-19 09:31:51 -0300 |
commit | 5cf39c8092aa8540e061a789ea85c87e5de1220d (patch) | |
tree | 04412274636dddf8d639b8738914896c9579615c | |
parent | tests/util.c: Add missing free() calls (diff) | |
download | pindaiba-5cf39c8092aa8540e061a789ea85c87e5de1220d.tar.gz pindaiba-5cf39c8092aa8540e061a789ea85c87e5de1220d.tar.xz |
src/util.c: Add freeit()
-rw-r--r-- | src/util.c | 6 | ||||
-rw-r--r-- | src/util.h | 3 | ||||
-rw-r--r-- | tests/util.c | 37 |
3 files changed, 46 insertions, 0 deletions
@@ -73,3 +73,9 @@ out: } return rc; } + +void +freeit(const void **const ptr) { + free((void *)*ptr); + *ptr = NULL; +} @@ -3,3 +3,6 @@ NULL_TERMINATOR; int slurp(const char *const filename, char **out); + +void +freeit(const void **const ptr); diff --git a/tests/util.c b/tests/util.c index f4e3d0c..ad43012 100644 --- a/tests/util.c +++ b/tests/util.c @@ -62,6 +62,38 @@ out: return rc; } +static int +test_freeit(void) { + int rc = -1; + + test_start("freeit()"); + + const char *ptr = NULL; + + { + testing("ptr is NULL afterwards"); + + ptr = malloc(1234U); + if (ptr == NULL) { + logerr("malloc(): %s\n", strerror(errno)); + goto out; + } + + assert(ptr != NULL); + freeit((void *)&ptr); + assert(ptr == NULL); + + test_ok(); + } + + rc = 0; +out: + if (ptr != NULL) { + freeit((void *)&ptr); + } + return rc; +} + int main(void) { @@ -72,6 +104,11 @@ main(void) { goto out; } + if (test_freeit()) { + logerr("test_freeit();\n"); + goto out; + } + rc = 0; out: return !!rc; |