diff --git a/src/lib/exercises/include/exercises/hackerrank/warmup/plus_minus.h b/src/lib/exercises/include/exercises/hackerrank/warmup/plus_minus.h index 6f8f9d1..674e780 100644 --- a/src/lib/exercises/include/exercises/hackerrank/warmup/plus_minus.h +++ b/src/lib/exercises/include/exercises/hackerrank/warmup/plus_minus.h @@ -8,6 +8,7 @@ const int HACKERRANK_WARMUP_PLUSMINUS_LIMIT_ANSWERS = 3; char **HACKERRANK_WARMUP_plusMinusCalculate(int arr_count, const int *arr); void HACKERRANK_WARMUP_plusMinus(int arr_count, const int *arr); +void HACKERRANK_WARMUP_freePlusMinus(char **plusMinusAnswer, int n); #ifdef __cplusplus } // extern "C" diff --git a/src/lib/exercises/src/hackerrank/warmup/plus_minus.c b/src/lib/exercises/src/hackerrank/warmup/plus_minus.c index 3468126..c2f322d 100644 --- a/src/lib/exercises/src/hackerrank/warmup/plus_minus.c +++ b/src/lib/exercises/src/hackerrank/warmup/plus_minus.c @@ -54,13 +54,20 @@ char **HACKERRANK_WARMUP_plusMinusCalculate(int arr_count, const int *arr) { return answer; } +void HACKERRANK_WARMUP_freePlusMinus(char **plusMinusAnswer, int n) { + for (int i = 0; i < n; i++) { + free(plusMinusAnswer[i]); + } + free(plusMinusAnswer); +} + void HACKERRANK_WARMUP_plusMinus(int arr_count, const int *arr) { char **output = HACKERRANK_WARMUP_plusMinusCalculate(arr_count, arr); for (int i = 0; i < HACKERRANK_WARMUP_PLUSMINUS_LIMIT_ANSWERS; i++) { printf("%s", output[i]); - free(output[i]); } - free(output); + HACKERRANK_WARMUP_freePlusMinus(output, + HACKERRANK_WARMUP_PLUSMINUS_LIMIT_ANSWERS); } diff --git a/src/tests/unit/lib/hackerrank/warmup/plus_minus.test.cpp b/src/tests/unit/lib/hackerrank/warmup/plus_minus.test.cpp index 3070522..3aaa3dd 100644 --- a/src/tests/unit/lib/hackerrank/warmup/plus_minus.test.cpp +++ b/src/tests/unit/lib/hackerrank/warmup/plus_minus.test.cpp @@ -32,9 +32,9 @@ TEST_CASE("plusMinus JSON Test Cases", "[hackerrank] [jsontestcase] [warmup]") { for (int i = 0; i < HACKERRANK_WARMUP_PLUSMINUS_LIMIT_ANSWERS; i++) { result_as_vector.emplace_back(result[i]); - free(result[i]); } - free(result); + HACKERRANK_WARMUP_freePlusMinus(result, + HACKERRANK_WARMUP_PLUSMINUS_LIMIT_ANSWERS); CHECK(result_as_vector == testcase["expected"]);