summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/types.c6
-rw-r--r--src/utils/utils.c8
-rw-r--r--src/utils/utils.h3
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