patch 7.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.
diff --git a/src/misc1.c b/src/misc1.c
index cb31e20..f32cb25 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -10875,6 +10875,7 @@
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 @@
#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 @@
recursive = FALSE;
- return (ga.ga_data != NULL) ? OK : FAIL;
+ return (ga.ga_data != NULL) ? retval : FAIL;
}
# ifdef VIM_BACKTICK
@@ -11031,7 +11036,7 @@
/*
* 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 @@
/* 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 @@
(flags & EW_SILENT) ? SHELL_SILENT : 0, NULL);
vim_free(cmd);
if (buffer == NULL)
- return 0;
+ return -1;
cmd = buffer;
while (*cmd != NUL)
diff --git a/src/version.c b/src/version.c
index 619aa58..e99e87e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 831,
+/**/
830,
/**/
829,