diff --git a/extras/fixture/src/unity_fixture.c b/extras/fixture/src/unity_fixture.c index 6fb1ede291ffd3eba4e0fd5248b874730d4f155b..7cafaa310e4d312ca7fdb11d7bd30997733339f5 100644 --- a/extras/fixture/src/unity_fixture.c +++ b/extras/fixture/src/unity_fixture.c @@ -227,7 +227,14 @@ static void release_memory(void * mem) void unity_free(void * mem) { - int overrun = isOverrun(mem);//strcmp(&memAsChar[guard->size], end) != 0; + int overrun; + + if (mem == NULL) + { + return; + } + + overrun = isOverrun(mem);//strcmp(&memAsChar[guard->size], end) != 0; release_memory(mem); if (overrun) { diff --git a/extras/fixture/test/unity_fixture_Test.c b/extras/fixture/test/unity_fixture_Test.c index 1f209e9f8ac2948e1b2ca96d692e9c4ae2677287..27652f6c3d45fe907337a3c1cb23e3f0510e8ac0 100644 --- a/extras/fixture/test/unity_fixture_Test.c +++ b/extras/fixture/test/unity_fixture_Test.c @@ -132,6 +132,11 @@ TEST(UnityFixture, PointerSet) TEST_ASSERT_POINTERS_EQUAL(&c2, p2); } +TEST(UnityFixture, FreeNULLSafety) +{ + unity_free(NULL); +} + //------------------------------------------------------------ TEST_GROUP(UnityCommandOptions); diff --git a/extras/fixture/test/unity_fixture_TestRunner.c b/extras/fixture/test/unity_fixture_TestRunner.c index 6fb06025f2df6d631b4d8a7ab4b7c5abd813837b..28d8e56652748513e8d5e775598252681e97a1c0 100644 --- a/extras/fixture/test/unity_fixture_TestRunner.c +++ b/extras/fixture/test/unity_fixture_TestRunner.c @@ -18,6 +18,7 @@ TEST_GROUP_RUNNER(UnityFixture) RUN_TEST_CASE(UnityFixture, ReallocSizeZeroFreesMemAndReturnsNullPointer); RUN_TEST_CASE(UnityFixture, CallocFillsWithZero); RUN_TEST_CASE(UnityFixture, PointerSet); + RUN_TEST_CASE(UnityFixture, FreeNULLSafety); } TEST_GROUP_RUNNER(UnityCommandOptions)