From efcd13d3aa5bd783b3222fad5157a75e725ff615 Mon Sep 17 00:00:00 2001 From: Mark VanderVoord Date: Wed, 21 May 2014 19:23:18 -0400 Subject: [PATCH] Make sure CMock releases its dynamically allocated memory at the end of the entire suite. --- src/cmock.c | 20 ++++++++++++++++++-- src/cmock.h | 1 + test/c/TestCMockCDynamic_Runner.c | 2 ++ vendor/unity | 2 +- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/cmock.c b/src/cmock.c index 1bb9c4e..a53d632 100644 --- a/src/cmock.c +++ b/src/cmock.c @@ -78,7 +78,7 @@ CMOCK_MEM_INDEX_TYPE CMock_Guts_MemChain(CMOCK_MEM_INDEX_TYPE root_index, CMOCK_ { return CMOCK_GUTS_NONE; } - + root = (void*)(&CMock_Guts_Buffer[root_index]); obj = (void*)(&CMock_Guts_Buffer[obj_index]); @@ -125,7 +125,7 @@ CMOCK_MEM_INDEX_TYPE CMock_Guts_MemEndOfChain(CMOCK_MEM_INDEX_TYPE root_index) { CMOCK_MEM_INDEX_TYPE index = root_index; CMOCK_MEM_INDEX_TYPE next_index; - + for (next_index = root_index; next_index != CMOCK_GUTS_NONE; next_index = CMock_Guts_MemNext(index)) @@ -174,3 +174,19 @@ void CMock_Guts_MemFreeAll(void) { CMock_Guts_FreePtr = CMOCK_MEM_ALIGN_SIZE; //skip the very beginning } + +//------------------------------------------------------- +// CMock_Guts_MemFreeFinal +//------------------------------------------------------- +void CMock_Guts_MemFreeFinal(void) +{ + CMock_Guts_FreePtr = CMOCK_MEM_ALIGN_SIZE; +#ifdef CMOCK_MEM_DYNAMIC + if (CMock_Guts_Buffer) + { + free(CMock_Guts_Buffer); + CMock_Guts_Buffer = NULL; + } +#endif +} + diff --git a/src/cmock.h b/src/cmock.h index bd80d4e..ba8cdc3 100644 --- a/src/cmock.h +++ b/src/cmock.h @@ -31,5 +31,6 @@ void* CMock_Guts_GetAddressFor(CMOCK_MEM_INDEX_TYPE index); CMOCK_MEM_INDEX_TYPE CMock_Guts_MemBytesFree(void); CMOCK_MEM_INDEX_TYPE CMock_Guts_MemBytesUsed(void); void CMock_Guts_MemFreeAll(void); +void CMock_Guts_MemFreeFinal(void); #endif //CMOCK_FRAMEWORK diff --git a/test/c/TestCMockCDynamic_Runner.c b/test/c/TestCMockCDynamic_Runner.c index a055f22..119743d 100644 --- a/test/c/TestCMockCDynamic_Runner.c +++ b/test/c/TestCMockCDynamic_Runner.c @@ -5,6 +5,7 @@ ========================================== */ #include "unity.h" +#include "cmock.h" #include #include @@ -31,5 +32,6 @@ int main(void) RUN_TEST(test_ThatWeCanAskForAllSortsOfSizes, 152); UnityEnd(); + CMock_Guts_MemFreeFinal(); return 0; } diff --git a/vendor/unity b/vendor/unity index 124bfd8..abca337 160000 --- a/vendor/unity +++ b/vendor/unity @@ -1 +1 @@ -Subproject commit 124bfd8027af18364baf1e0668b8899c9346db56 +Subproject commit abca337cd07c25291817b9730b80df9dd6fd8cea