]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Plug some memory leaks in the unit tests
authorJoel Rosdahl <joel@rosdahl.net>
Sun, 3 Apr 2011 20:04:08 +0000 (22:04 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 3 Apr 2011 20:04:08 +0000 (22:04 +0200)
ccache.c
test/test_argument_processing.c

index ea123b9747a321e58dfb9df0f1bdc81466491480..c0cd3a2700b7a788acb9538a4846ce8a52933191 100644 (file)
--- a/ccache.c
+++ b/ccache.c
@@ -1396,14 +1396,14 @@ cc_process_args(struct args *orig_args, struct args **preprocessor_args,
                                result = false;
                                goto out;
                        }
-                       output_obj = argv[i+1];
+                       output_obj = x_strdup(argv[i+1]);
                        i++;
                        continue;
                }
 
                /* alternate form of -o, with no space */
                if (str_startswith(argv[i], "-o")) {
-                       output_obj = &argv[i][2];
+                       output_obj = x_strdup(&argv[i][2]);
                        continue;
                }
 
@@ -1692,10 +1692,7 @@ cc_process_args(struct args *orig_args, struct args **preprocessor_args,
                        output_obj = format("%s.gch", input_file);
                } else {
                        char *p;
-                       output_obj = x_strdup(input_file);
-                       if ((p = strrchr(output_obj, '/'))) {
-                               output_obj = p+1;
-                       }
+                       output_obj = basename(input_file);
                        p = strrchr(output_obj, '.');
                        if (!p || !p[1]) {
                                cc_log("Badly formed object filename");
@@ -1801,7 +1798,7 @@ cc_reset(void)
        base_dir = NULL;
        args_free(orig_args); orig_args = NULL;
        free(input_file); input_file = NULL;
-       output_obj = NULL;
+       free(output_obj); output_obj = NULL;
        free(output_dep); output_dep = NULL;
        free(cached_obj_hash); cached_obj_hash = NULL;
        free(cached_obj); cached_obj = NULL;
index 174998dd802e3ef5b8bc810a1750894e587ac56b..a8be941f437dda5fe534385426d9e5bd4efe3ad1 100644 (file)
@@ -97,17 +97,18 @@ TEST(sysroot_should_be_rewritten_if_basedir_is_used)
 
        CHECK(cc_process_args(orig, &act_cpp, &act_cc));
        CHECK_STR_EQ(act_cpp->argv[1], "--sysroot=/some/directory");
-
+       args_free(act_cpp);
+       args_free(act_cc);
        cc_reset();
+
        base_dir = "/some";
        current_working_dir = get_cwd();
-
        CHECK(cc_process_args(orig, &act_cpp, &act_cc));
        CHECK(str_startswith(act_cpp->argv[1], "--sysroot=../"));
-
        args_free(orig);
-       base_dir = NULL;
-       current_working_dir = NULL;
+       args_free(act_cpp);
+       args_free(act_cc);
+       cc_reset();
 }
 
 TEST_SUITE_END