mirror of
https://github.com/neovim/neovim.git
synced 2025-10-16 14:56:08 +00:00
vim-patch:9.0.0360: crash when invalid line number on :for is ignored
Problem: Crash when invalid line number on :for is ignored.
Solution: Do not check breakpoint for non-existing line.
35d21c6830
Test does not fail without the fix in Nvim as Nvim uses 0 when line
number overflows. If it is changed to MAXLNUM then the test does fail
without the fix, but using 0 seems better as E481 is still given.
This commit is contained in:
@@ -642,7 +642,7 @@ int do_cmdline(char *cmdline, LineGetter fgetline, void *cookie, int flags)
|
|||||||
|
|
||||||
// Check for the next breakpoint at or after the ":while"
|
// Check for the next breakpoint at or after the ":while"
|
||||||
// or ":for".
|
// or ":for".
|
||||||
if (breakpoint != NULL) {
|
if (breakpoint != NULL && lines_ga.ga_len > current_line) {
|
||||||
*breakpoint = dbg_find_breakpoint(getline_equal(fgetline, cookie, getsourceline), fname,
|
*breakpoint = dbg_find_breakpoint(getline_equal(fgetline, cookie, getsourceline), fname,
|
||||||
((wcmd_T *)lines_ga.ga_data)[current_line].lnum - 1);
|
((wcmd_T *)lines_ga.ga_data)[current_line].lnum - 1);
|
||||||
*dbg_tick = debug_tick;
|
*dbg_tick = debug_tick;
|
||||||
|
@@ -1,5 +1,8 @@
|
|||||||
" Tests for various eval things.
|
" Tests for various eval things.
|
||||||
|
|
||||||
|
source view_util.vim
|
||||||
|
source shared.vim
|
||||||
|
|
||||||
function s:foo() abort
|
function s:foo() abort
|
||||||
try
|
try
|
||||||
return [] == 0
|
return [] == 0
|
||||||
@@ -87,6 +90,18 @@ func Test_for_over_null_string()
|
|||||||
let &enc = save_enc
|
let &enc = save_enc
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_for_invalid_line_count()
|
||||||
|
let lines =<< trim END
|
||||||
|
111111111111111111111111 for line in ['one']
|
||||||
|
endfor
|
||||||
|
END
|
||||||
|
call writefile(lines, 'XinvalidFor')
|
||||||
|
" only test that this doesn't crash
|
||||||
|
call RunVim([], [], '-u NONE -e -s -S XinvalidFor -c qa')
|
||||||
|
|
||||||
|
call delete('XinvalidFor')
|
||||||
|
endfunc
|
||||||
|
|
||||||
func Test_readfile_binary()
|
func Test_readfile_binary()
|
||||||
new
|
new
|
||||||
call setline(1, ['one', 'two', 'three'])
|
call setline(1, ['one', 'two', 'three'])
|
||||||
|
Reference in New Issue
Block a user