From fc49942a6a10314ccfa4b121717ee2e65b9e5fae Mon Sep 17 00:00:00 2001 From: Joel Rosdahl Date: Tue, 7 Aug 2012 17:22:16 +0200 Subject: [PATCH] Let cc_process_args work on a copy of orig_args This way, orig_args is preserved after expansion of "@file" arguments so that failed() can mimick the original compilation command. --- ccache.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/ccache.c b/ccache.c index 5ead81073..f212f23eb 100644 --- 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; -- 2.47.3