diff options
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/types.c | 6 | ||||
-rw-r--r-- | src/utils/utils.c | 8 | ||||
-rw-r--r-- | src/utils/utils.h | 3 |
3 files changed, 9 insertions, 8 deletions
diff --git a/src/utils/types.c b/src/utils/types.c index 390d34c..f986ba3 100644 --- a/src/utils/types.c +++ b/src/utils/types.c @@ -15,7 +15,7 @@ generic_array_t create_array(size_t elem_size, size_t n) { } void free_array(generic_array_t *array) { - free_and_nullify(array->data); + free_and_nullify((void **)&array->data); array->n = 0; } @@ -53,7 +53,7 @@ void free_str_array(str_array_t *array) { for (size_t i = 0; i < array->n; i++) { free(array->str[i]); } - free_and_nullify(array->str); + free_and_nullify((void **)&array->str); array->n = 0; } @@ -115,7 +115,7 @@ data_t dequeue(queue_t *queue) { node_t *temp = queue->front; data_t data = temp->data; queue->front = temp->next; - free_and_nullify(temp); + free_and_nullify((void **)&temp); if (queue->front == NULL) { queue->rear = NULL; diff --git a/src/utils/utils.c b/src/utils/utils.c index ae60eee..f7de635 100644 --- a/src/utils/utils.c +++ b/src/utils/utils.c @@ -170,9 +170,9 @@ int repchr(char *str, char t, char r) { return c; } -void free_and_nullify(void *p) { - if (p) { - free(p); - p = NULL; +void free_and_nullify(void **p) { + if (*p) { + free(*p); + *p = NULL; } } diff --git a/src/utils/utils.h b/src/utils/utils.h index f6bbad5..a96ab70 100644 --- a/src/utils/utils.h +++ b/src/utils/utils.h @@ -13,6 +13,7 @@ const char *mimeType2ext(const char *mimeType); int repchr(char *str, char t, char r); -void free_and_nullify(void *p); +/* NOTICE: pass a pointer-to-pointer to free the original pointer. */ +void free_and_nullify(void **p); #endif |