summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Rosdahl <joel@rosdahl.net>2019-04-25 21:21:53 +0200
committerJoel Rosdahl <joel@rosdahl.net>2019-04-25 21:21:53 +0200
commite96d60be2a1c479594b7e4b4e7b0e87f6a374182 (patch)
tree0c5f0ee7602ae36bded50a6f007d0b0e7dafe4fc
parent5a84ff25cbc0c43ad46367b89ce053f2111e8cba (diff)
downloadccache-e96d60be2a1c479594b7e4b4e7b0e87f6a374182.tar.gz
Calculate length correctly in win32argvtos
-rw-r--r--src/execute.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/execute.c b/src/execute.c
index af95a343..3ee09534 100644
--- a/src/execute.c
+++ b/src/execute.c
@@ -30,7 +30,6 @@ win32argvtos(char *prefix, char **argv, int *length)
{
int i = 0;
int k = 0;
- *length = 0;
char *arg = prefix ? prefix : argv[i++];
do {
int bs = 0;
@@ -53,9 +52,9 @@ win32argvtos(char *prefix, char **argv, int *length)
char *ptr = malloc(k + 1);
char *str = ptr;
if (!str) {
+ *length = 0;
return NULL;
}
- *length = k;
i = 0;
arg = prefix ? prefix : argv[i++];
@@ -85,6 +84,7 @@ win32argvtos(char *prefix, char **argv, int *length)
} while ((arg = argv[i++]));
ptr[-1] = '\0';
+ *length = ptr - str - 1;
return str;
}
@@ -174,7 +174,7 @@ win32execute(char *path, char **argv, int doreturn,
char *tmp_file = format("%s.tmp", path);
FILE *fp = create_tmp_file(&tmp_file, "w");
char atfile[MAX_PATH + 3];
- fwrite(args, 1, length - 1, fp);
+ fwrite(args, 1, length, fp);
fclose(fp);
if (ferror(fp)) {
cc_log("Error writing @file; this command will probably fail: %s", args);