diff --git a/makefile b/makefile index 038841f..a27e9b1 100644 --- a/makefile +++ b/makefile @@ -1,5 +1,6 @@ CC = gcc FLAGS = -g -Wall -lm +ASAN_FLAGS = -fsanitize=address ifeq ($(OS),Windows_NT) include makefile_windows.variables @@ -39,7 +40,7 @@ unitTests: TEST_BIN = runTests unitTests: stack.o test_stack.o - $(CC) $(FLAGS) -I$(unityfolder) -o $(TEST_BIN) stack.o test_stack.o $(unityfolder)/unity.c + $(CC) $(FLAGS) $(ASAN_FLAGS) -I$(unityfolder) -o $(TEST_BIN) stack.o test_stack.o $(unityfolder)/unity.c test_stack.o: test_stack.c $(CC) $(FLAGS) -I$(unityfolder) -c test_stack.c -o test_stack.o @@ -51,5 +52,5 @@ clean: ifeq ($(OS),Windows_NT) rm -f *.o doble else - del /f *.o doble + rm -f *.o doble endif \ No newline at end of file diff --git a/stack.c b/stack.c index ef70b49..301bfa0 100644 --- a/stack.c +++ b/stack.c @@ -68,16 +68,17 @@ StackNode *pop(StackNode *stack) void *top(StackNode *stack) { return stack != NULL ? stack->data : NULL; } // Clears stack and releases all memory. -void clearStack(StackNode *stack) +void clearStack(StackNode **stack) { - while (stack != NULL) + while (*stack != NULL) { - StackNode *next = stack->next; - free(stack); - stack = next; - stack->data = NULL; - stack->next = NULL; - stack->prev = NULL; + StackNode *next = (*stack)->next; + free(*stack); + (*stack)->data = NULL; + (*stack)->next = NULL; + (*stack)->prev = NULL; + (*stack) = next; + } } \ No newline at end of file diff --git a/stack.h b/stack.h index b1c8f86..8119b2c 100644 --- a/stack.h +++ b/stack.h @@ -40,6 +40,6 @@ StackNode *pop(StackNode *stack); void *top(StackNode *stack); // Clears stack and releases all memory. -void clearStack(StackNode *stack); +void clearStack(StackNode **stack); #endif diff --git a/test_stack.c b/test_stack.c index dd9a6ca..04322d6 100644 --- a/test_stack.c +++ b/test_stack.c @@ -36,7 +36,7 @@ void test_clearStack(void) { testStack = push(testStack, &testInts[i]); } - clearStack(testStack); + clearStack(&testStack); TEST_ASSERT_NULL(testStack); } @@ -56,4 +56,4 @@ int main(void) { RUN_TEST(test_clearStack); return UNITY_END(); -} \ No newline at end of file +}