|
From: <th...@us...> - 2014-07-24 08:03:41
|
Revision: 556
http://sourceforge.net/p/cgreen/code/556
Author: thoni56
Date: 2014-07-24 08:03:21 +0000 (Thu, 24 Jul 2014)
Log Message:
-----------
Applied patch for a few memory leaks from Dirk Jagdmann
Modified Paths:
--------------
trunk/cgreen/tools/cgreen-runner.c
trunk/cgreen/tools/runner.c
trunk/cgreen/tools/tests/runnerTests.c
Modified: trunk/cgreen/tools/cgreen-runner.c
===================================================================
--- trunk/cgreen/tools/cgreen-runner.c 2014-07-24 07:40:45 UTC (rev 555)
+++ trunk/cgreen/tools/cgreen-runner.c 2014-07-24 08:03:21 UTC (rev 556)
@@ -12,6 +12,7 @@
/*----------------------------------------------------------------------*/
static int file_exists(const char *filename)
{
+ if (! filename) return 0;
return (access(filename, F_OK) == 0);
}
@@ -44,15 +45,21 @@
if (options) free(options);
}
-static const char *get_a_suite_name(const char *suite_option, const char *test_library_name) {
- const char *suite_name;
+static char* get_a_suite_name(const char *suite_option, const char *test_library_name) {
if (suite_option == NULL) {
- suite_name = basename(strdup(test_library_name));
- if (strchr(suite_name, '.'))
- *strchr(suite_name, '.') = '\0';
+ char *suite_name;
+ char *s;
+ /* basename can return the parameter or an internal static string. Work around this. */
+ s = strdup(test_library_name);
+ suite_name = strdup(basename(s));
+ free(s);
+ if ((s = strchr(suite_name, '.'))) {
+ *s = '\0';
+ }
return suite_name;
- } else
- return suite_option;
+ } else {
+ return strdup(suite_option);
+ }
}
@@ -158,9 +165,11 @@
status = runner(reporter, test_library, suite_name, test_name, verbose, no_run);
if (status != 0) {
- printf("Library %s resulted in error status: %i\n", test_library, status);
+ printf("Library %s with test %s/%s resulted in error status: %i\n", test_library, suite_name, test_name, status);
return status;
}
+
+ free((void*)suite_name);
}
return EXIT_SUCCESS;
Modified: trunk/cgreen/tools/runner.c
===================================================================
--- trunk/cgreen/tools/runner.c 2014-07-24 07:40:45 UTC (rev 555)
+++ trunk/cgreen/tools/runner.c 2014-07-24 08:03:21 UTC (rev 556)
@@ -334,6 +334,7 @@
printf("Discovered %s:%s (%s)\n", suite_name, test_name, function_name);
free(suite_name);
free(test_name);
+ free(function_name);
}
if (register_test(test_items, maximum_number_of_test_items, specification_name) < 0) {
ret = -1;
Modified: trunk/cgreen/tools/tests/runnerTests.c
===================================================================
--- trunk/cgreen/tools/tests/runnerTests.c 2014-07-24 07:40:45 UTC (rev 555)
+++ trunk/cgreen/tools/tests/runnerTests.c 2014-07-24 08:03:21 UTC (rev 556)
@@ -21,8 +21,9 @@
Ensure(Runner, can_demangle_specification_to_function_name) {
// NOTE: Must have the test name duplicated in the assert to compare to the actual function name
- assert_that(function_name_from_specname(STRINGIFY(spec_name(Runner, can_demangle_specification_to_function_name))),
- is_equal_to_string(__FUNCTION__));
+ char *function_name = function_name_from_specname(STRINGIFY(spec_name(Runner, can_demangle_specification_to_function_name)));
+ assert_that(function_name, is_equal_to_string(__FUNCTION__));
+ free(function_name);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|