]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Let cc_process_args work on a copy of orig_args
authorJoel Rosdahl <joel@rosdahl.net>
Tue, 7 Aug 2012 15:22:16 +0000 (17:22 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Tue, 7 Aug 2012 15:22:16 +0000 (17:22 +0200)
This way, orig_args is preserved after expansion of "@file" arguments so
that failed() can mimick the original compilation command.

ccache.c

index 5ead81073d597cbb523f5e879d213c0fbea1d2e9..f212f23eb938df1f50f7717441a8e620c999c882 100644 (file)
--- a/ccache.c
+++ b/ccache.c
@@ -1425,14 +1425,18 @@ cc_process_args(struct args *args, struct args **preprocessor_args,
        bool dependency_filename_specified = false;
        /* is the dependency makefile target name specified with -MT or -MQ? */
        bool dependency_target_specified = false;
-       struct args *stripped_args = NULL, *dep_args = NULL;
-       int argc = args->argc;
-       char **argv = args->argv;
+       struct args *expanded_args, *stripped_args, *dep_args;
+       int argc;
+       char **argv;
        bool result = true;
 
+       expanded_args = args_copy(args);
        stripped_args = args_init(0, NULL);
        dep_args = args_init(0, NULL);
 
+       argc = expanded_args->argc;
+       argv = expanded_args->argv;
+
        args_add(stripped_args, argv[0]);
 
        for (i = 1; i < argc; i++) {
@@ -1468,9 +1472,9 @@ cc_process_args(struct args *args, struct args **preprocessor_args,
                                goto out;
                        }
 
-                       args_insert(args, i, file_args, true);
-                       argc = args->argc;
-                       argv = args->argv;
+                       args_insert(expanded_args, i, file_args, true);
+                       argc = expanded_args->argc;
+                       argv = expanded_args->argv;
                        i--;
                        continue;
                }
@@ -2061,6 +2065,7 @@ cc_process_args(struct args *args, struct args **preprocessor_args,
        args_extend(*preprocessor_args, dep_args);
 
 out:
+       args_free(expanded_args);
        args_free(stripped_args);
        args_free(dep_args);
        return result;