]> granicus.if.org Git - libexpat/commitdiff
Free all the data structures associated with test cases.
authorRhodri James <rhodri@kynesim.co.uk>
Fri, 14 Jul 2017 16:53:56 +0000 (17:53 +0100)
committerRhodri James <rhodri@kynesim.co.uk>
Fri, 14 Jul 2017 16:53:56 +0000 (17:53 +0100)
Removes some of the memory leaks discovered by AddressSanitizer
in the test suite (see Issue #23)

expat/tests/minicheck.c

index 9003d3b7fd72321d70e3a5766f7d38f1bbf0a246..1b803c228f70946a4d9889a6dc672dc3177fbb27 100644 (file)
@@ -70,6 +70,24 @@ tcase_add_test(TCase *tc, tcase_test_function test)
     tc->ntests++;
 }
 
+static void
+tcase_dispose(TCase *tc)
+{
+    free(tc->tests);
+    free(tc);
+}
+
+static void
+suite_dispose(Suite *suite)
+{
+    while (suite->tests != NULL) {
+        TCase *next = suite->tests->next_tcase;
+        tcase_dispose(suite->tests);
+        suite->tests = next;
+    }
+    free(suite);
+}
+
 SRunner *
 srunner_create(Suite *suite)
 {
@@ -175,6 +193,6 @@ srunner_ntests_failed(SRunner *runner)
 void
 srunner_free(SRunner *runner)
 {
-    free(runner->suite);
+    suite_dispose(runner->suite);
     free(runner);
 }