Skip to content

Commit ece0b87

Browse files
committed
patch 8.2.2313: Vim9: using uninitialized field when parsing range
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)
1 parent 467b59c commit ece0b87

3 files changed

Lines changed: 11 additions & 1 deletion

File tree

src/testdir/test_vim9_cmd.vim

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,6 +661,12 @@ def Test_range_after_command_modifier()
661661
bwipe!
662662
enddef
663663

664+
def Test_silent_pattern()
665+
new
666+
silent! :/pat/put _
667+
bwipe!
668+
enddef
669+
664670
def Test_eval_command()
665671
var from = 3
666672
var to = 5

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,8 @@ static char *(features[]) =
750750

751751
static int included_patches[] =
752752
{ /* Add new patch number below this line */
753+
/**/
754+
2313,
753755
/**/
754756
2312,
755757
/**/

src/vim9execute.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3148,11 +3148,13 @@ call_def_function(
31483148
goto failed;
31493149
++ectx.ec_stack.ga_len;
31503150
tv = STACK_TV_BOT(-1);
3151+
ea.line2 = 0;
31513152
ea.addr_count = 0;
31523153
ea.addr_type = ADDR_LINES;
31533154
ea.cmd = iptr->isn_arg.string;
3155+
ea.skip = FALSE;
31543156
if (parse_cmd_address(&ea, &errormsg, FALSE) == FAIL)
3155-
goto failed;
3157+
goto on_error;
31563158
if (ea.addr_count == 0)
31573159
tv->vval.v_number = curwin->w_cursor.lnum;
31583160
else

0 commit comments

Comments
 (0)