]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.2313: Vim9: using uninitialized field when parsing range v8.2.2313
authorBram Moolenaar <Bram@vim.org>
Fri, 8 Jan 2021 19:40:45 +0000 (20:40 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 8 Jan 2021 19:40:45 +0000 (20:40 +0100)
Problem:    Vim9: using uninitialized field when parsing range. ":silent!" not
            respected when parsing range fails.
Solution:   Initialize ea.skip.  On pattern failure handle it like an error.
            (closes #7636)

src/testdir/test_vim9_cmd.vim
src/version.c
src/vim9execute.c

index 5b84feceeac2bb57ff6ee54e844dcd6c4bb97979..f5cb1c8739d36e626d447830f240d4de306d814b 100644 (file)
@@ -661,6 +661,12 @@ def Test_range_after_command_modifier()
   bwipe!
 enddef
 
+def Test_silent_pattern()
+  new
+  silent! :/pat/put _
+  bwipe!
+enddef
+
 def Test_eval_command()
   var from = 3
   var to = 5
index 96046509630f701c6fa713580183328ee7559072..9e49e6ddaa0ad61f34f61b81417fbd119d80d150 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2313,
 /**/
     2312,
 /**/
index 1376148228361dd836231485e22f9d506ab23a74..44180b8f19681c493ce3cb2e4614a777edfea79b 100644 (file)
@@ -3148,11 +3148,13 @@ call_def_function(
                        goto failed;
                    ++ectx.ec_stack.ga_len;
                    tv = STACK_TV_BOT(-1);
+                   ea.line2 = 0;
                    ea.addr_count = 0;
                    ea.addr_type = ADDR_LINES;
                    ea.cmd = iptr->isn_arg.string;
+                   ea.skip = FALSE;
                    if (parse_cmd_address(&ea, &errormsg, FALSE) == FAIL)
-                       goto failed;
+                       goto on_error;
                    if (ea.addr_count == 0)
                        tv->vval.v_number = curwin->w_cursor.lnum;
                    else