From ff6a6b13b6625f195404e4a738d60cbab465c7c4 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Fri, 31 May 2024 15:03:56 -0300 Subject: src/vector.h: Revert back to doing vector_free(&v) --- src/vector.c | 9 ++++---- src/vector.h | 2 +- tests/vector.c | 65 ++++++++++++++++++++++------------------------------------ 3 files changed, 31 insertions(+), 45 deletions(-) diff --git a/src/vector.c b/src/vector.c index 6708546..b65ee2f 100644 --- a/src/vector.c +++ b/src/vector.c @@ -109,10 +109,11 @@ vector_new(const size_t value_size, const struct Vector **const out) { } void -vector_free(const struct Vector *const v) { - assert(v != NULL); - free(v->values); - free((void *)v); +vector_free(const struct Vector **const v) { + assert((*v) != NULL); + free((*v)->values); + free((void *)*v); + *v = NULL; } size_t diff --git a/src/vector.h b/src/vector.h index 3103375..441ac14 100644 --- a/src/vector.h +++ b/src/vector.h @@ -13,7 +13,7 @@ int vector_new(const size_t value_size, const struct Vector **const out); void -vector_free(const struct Vector *const v); +vector_free(const struct Vector **const v); size_t vector_count(const struct Vector *const v); diff --git a/tests/vector.c b/tests/vector.c index 607a46a..72d796e 100644 --- a/tests/vector.c +++ b/tests/vector.c @@ -43,8 +43,7 @@ test_vector_new_with(void) { assert(v->multiplier == multiplier); assert(v->value_size == size); - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -69,8 +68,7 @@ test_vector_new_with(void) { rc = 0; out: if (v != NULL) { - vector_free(v); - v = NULL; + vector_free(&v); } return rc; } @@ -98,8 +96,7 @@ test_vector_new(void) { assert(v->multiplier == GROWTH_MULTIPLIER); assert(v->value_size == size); - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -124,8 +121,7 @@ test_vector_new(void) { assert(v->multiplier == GROWTH_MULTIPLIER); assert(v->value_size == size); - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -133,8 +129,7 @@ test_vector_new(void) { rc = 0; out: if (v != NULL) { - vector_free(v); - v = NULL; + vector_free(&v); } return rc; } @@ -148,6 +143,7 @@ test_vector_free(void) { test_start("vector_free()"); { testing("*v becomes NULL again after vector_free(&v)"); + assert(v == NULL); if (vector_new(sizeof(char), &v)) { logerr("vector_new()"); @@ -155,14 +151,16 @@ test_vector_free(void) { } assert(v != NULL); - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } rc = 0; out: + if (v != NULL) { + vector_free(&v); + } return rc; } @@ -190,8 +188,7 @@ test_vector_count(void) { assert(vector_count(v) == 1); assert(v->count == 1); - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -199,8 +196,7 @@ test_vector_count(void) { rc = 0; out: if (v != NULL) { - vector_free(v); - v = NULL; + vector_free(&v); } return rc; } @@ -319,8 +315,7 @@ test_vector_nth(void) { assert(vector_nth(v, 2U, (void *)&nth) == 0); assert(nth == 555); - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -341,8 +336,7 @@ test_vector_nth(void) { assert(vector_nth(v, 4U, (void *)&nth) != 0); assert(nth == 222); - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -350,8 +344,7 @@ test_vector_nth(void) { rc = 0; out: if (v != NULL) { - vector_free(v); - v = NULL; + vector_free(&v); } return rc; } @@ -377,8 +370,7 @@ test_vector_push_back(void) { assert(vector_push_back(v, &after) == 0); assert(v->values[0] == (void *)after); - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -414,8 +406,7 @@ test_vector_push_back(void) { assert(v->capacity == new_capacity); assert(v->count == capacity + 2U); - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -423,8 +414,7 @@ test_vector_push_back(void) { rc = 0; out: if (v != NULL) { - vector_free(v); - v = NULL; + vector_free(&v); } return rc; } @@ -448,8 +438,7 @@ test_vector_pop_back(void) { assert(vector_pop_back(v, (void *)&val) != 0); assert(val == 222); - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -489,16 +478,15 @@ test_vector_pop_back(void) { assert(vector_pop_back(v, (void *)&val) != 0); - vector_free(v); - v = NULL; + vector_free(&v); + test_ok(); } rc = 0; out: if (v != NULL) { - vector_free(v); - v = NULL; + vector_free(&v); } return rc; } @@ -523,8 +511,7 @@ test_vector_contains(void) { assert(!vector_contains(v, &value)); } - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -552,8 +539,7 @@ test_vector_contains(void) { assert(vector_contains(v, &i)); } - vector_free(v); - v = NULL; + vector_free(&v); test_ok(); } @@ -561,8 +547,7 @@ test_vector_contains(void) { rc = 0; out: if (v != NULL) { - vector_free(v); - v = NULL; + vector_free(&v); } return rc; } -- cgit v1.2.3