summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/util.c4
-rw-r--r--tests/util.c10
2 files changed, 14 insertions, 0 deletions
diff --git a/src/util.c b/src/util.c
index c0498aa..7e62755 100644
--- a/src/util.c
+++ b/src/util.c
@@ -21,6 +21,10 @@ EXIT_USAGE = 2;
void
freeit(const void **const ptr) {
+ if (ptr == NULL) {
+ return;
+ }
+
free((void *)*ptr);
*ptr = NULL;
}
diff --git a/tests/util.c b/tests/util.c
index bc85b70..a720123 100644
--- a/tests/util.c
+++ b/tests/util.c
@@ -41,6 +41,16 @@ test_freeit(void) {
test_ok();
}
+ {
+ testing("tolerate be given a NULL pointer");
+
+ void *p = NULL;
+ freeit(NULL);
+ freeit(p);
+ freeit((void *)&p);
+
+ test_ok();
+ }
rc = 0;
out: