From e96d60be2a1c479594b7e4b4e7b0e87f6a374182 Mon Sep 17 00:00:00 2001 From: Joel Rosdahl Date: Thu, 25 Apr 2019 21:21:53 +0200 Subject: Calculate length correctly in win32argvtos --- src/execute.c | 6 +++--- 1 file 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); -- cgit v1.2.1