]> granicus.if.org Git - vim/commitdiff
patch 8.0.1746: MS-Windows: channel tests fail v8.0.1746
authorBram Moolenaar <Bram@vim.org>
Sat, 21 Apr 2018 21:00:27 +0000 (23:00 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 21 Apr 2018 21:00:27 +0000 (23:00 +0200)
Problem:    MS-Windows: channel tests fail.
Solution:   Make a copy of the command before splitting it.

src/channel.c
src/version.c

index dbc7d92de0d5e0c9f1f5a26d37541b3c0a301b82..fbf1cbeb9fc390e99314572e16e468dd849d4c84 100644 (file)
@@ -5563,6 +5563,8 @@ job_start(typval_T *argvars, char **argv_arg, jobopt_T *opt_arg)
 #endif
     if (argvars[0].v_type == VAR_STRING)
     {
+       char_u  *cmd_copy;
+
        /* Command is a string. */
        cmd = argvars[0].vval.v_string;
        if (cmd == NULL || *cmd == NUL)
@@ -5570,12 +5572,18 @@ job_start(typval_T *argvars, char **argv_arg, jobopt_T *opt_arg)
            EMSG(_(e_invarg));
            goto theend;
        }
-       /* This will modify "cmd". */
-       if (mch_parse_cmd(cmd, FALSE, &argv, &argc) == FAIL)
+       /* Make a copy, parsing will modify "cmd". */
+       cmd_copy = vim_strsave(cmd);
+       if (cmd_copy == NULL
+               || mch_parse_cmd(cmd_copy, FALSE, &argv, &argc) == FAIL)
+       {
+           vim_free(cmd_copy);
            goto theend;
+       }
        for (i = 0; i < argc; i++)
            argv[i] = (char *)vim_strsave((char_u *)argv[i]);
        argv[argc] = NULL;
+       vim_free(cmd_copy);
     }
     else if (argvars[0].v_type != VAR_LIST
            || argvars[0].vval.v_list == NULL
index 153532227dc3506fd4e8f9fee94cbd023b1efd57..af43697c11cd2a176ce04fc89492b75dda37e6f1 100644 (file)
@@ -761,6 +761,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1746,
 /**/
     1745,
 /**/