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 | 
