diff options
author | Bram Moolenaar <Bram@vim.org> | 2015-08-25 13:57:04 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2015-08-25 13:57:04 +0200 |
commit | 3f188935ec4db5117c4a64cc3f71219175624745 (patch) | |
tree | ec04e75a0336f8e29a4e6f51678816995dbd833f /src/misc1.c | |
parent | b341dda575899458f7075614dcedf0a80ee9d080 (diff) | |
download | vim-git-3f188935ec4db5117c4a64cc3f71219175624745.tar.gz |
patch 7.4.831v7.4.831
Problem: When expanding on the command line and encountering an
error, the command is executed anyway.
Solution: Bail out when an error is detected.
Diffstat (limited to 'src/misc1.c')
-rw-r--r-- | src/misc1.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/misc1.c b/src/misc1.c index cb31e201b..f32cb2513 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -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) |