]> granicus.if.org Git - vim/commitdiff
patch 7.4.831 v7.4.831
authorBram Moolenaar <Bram@vim.org>
Tue, 25 Aug 2015 11:57:04 +0000 (13:57 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 25 Aug 2015 11:57:04 +0000 (13:57 +0200)
Problem:    When expanding  on the command line and encountering an
            error, the command is executed anyway.
Solution:   Bail out when an error is detected.

src/misc1.c
src/version.c

index cb31e201bbcc84668f3a2fcb7b72c821ee26c4c1..f32cb251304bddb06f575cccf865f8e41a3634bd 100644 (file)
@@ -10875,6 +10875,7 @@ gen_expand_wildcards(num_pat, pat, num_file, file, flags)
     char_u             *p;
     static int         recursive = FALSE;
     int                        add_pat;
+    int                        retval = OK;
 #if defined(FEAT_SEARCHPATH)
     int                        did_expand_in_path = FALSE;
 #endif
@@ -10924,7 +10925,11 @@ gen_expand_wildcards(num_pat, pat, num_file, file, flags)
 
 #ifdef VIM_BACKTICK
        if (vim_backtick(p))
+       {
            add_pat = expand_backtick(&ga, p, flags);
+           if (add_pat == -1)
+               retval = FAIL;
+       }
        else
 #endif
        {
@@ -11013,7 +11018,7 @@ gen_expand_wildcards(num_pat, pat, num_file, file, flags)
 
     recursive = FALSE;
 
-    return (ga.ga_data != NULL) ? OK : FAIL;
+    return (ga.ga_data != NULL) ? retval : FAIL;
 }
 
 # ifdef VIM_BACKTICK
@@ -11031,7 +11036,7 @@ vim_backtick(p)
 /*
  * Expand an item in `backticks` by executing it as a command.
  * Currently only works when pat[] starts and ends with a `.
- * Returns number of file names found.
+ * Returns number of file names found, -1 if an error is encountered.
  */
     static int
 expand_backtick(gap, pat, flags)
@@ -11048,7 +11053,7 @@ expand_backtick(gap, pat, flags)
     /* Create the command: lop off the backticks. */
     cmd = vim_strnsave(pat + 1, (int)STRLEN(pat) - 2);
     if (cmd == NULL)
-       return 0;
+       return -1;
 
 #ifdef FEAT_EVAL
     if (*cmd == '=')       /* `={expr}`: Expand expression */
@@ -11059,7 +11064,7 @@ expand_backtick(gap, pat, flags)
                                (flags & EW_SILENT) ? SHELL_SILENT : 0, NULL);
     vim_free(cmd);
     if (buffer == NULL)
-       return 0;
+       return -1;
 
     cmd = buffer;
     while (*cmd != NUL)
index 619aa588b66595f5a119f14b7881ec13f684b43a..e99e87edf5be802b60c64b4d1573ea532b354197 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    831,
 /**/
     830,
 /**/