patch 9.1.1143: illegal memory access when putting a register

Problem:  illegal memory access when putting a register
Solution: make sure cursor column doesn't become negative

Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Christian Brabandt
2025-02-23 20:01:54 +01:00
parent 28155d0855
commit e0029daa35
3 changed files with 20 additions and 1 deletions

View File

@ -2249,7 +2249,7 @@ error:
// Put the '] mark on the first byte of the last inserted character.
// Correct the length for change in indent.
curbuf->b_op_end.lnum = new_lnum;
col = (colnr_T)y_array[y_size - 1].length - lendiff;
col = MAX(0, (colnr_T)y_array[y_size - 1].length - lendiff);
if (col > 1)
{
curbuf->b_op_end.col = col - 1;

View File

@ -1123,4 +1123,21 @@ func Test_register_redir_display()
call setreg(1, a[0], a[1])
endfunc
" this caused an illegal memory access and a crash
func Test_register_cursor_column_negative()
CheckRunVimInTerminal
let script =<< trim END
f XREGISTER
call setline(1, 'abcdef a')
call setreg("a", "\n", 'c')
call cursor(1, 7)
call feedkeys("i\<C-R>\<C-P>azyx$#\<esc>", 't')
END
call writefile(script, 'XRegister123', 'D')
let buf = RunVimInTerminal('-S XRegister123', {})
call term_sendkeys(buf, "\<c-g>")
call WaitForAssert({-> assert_match('XREGISTER', term_getline(buf, 19))})
call StopVimInTerminal(buf)
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1143,
/**/
1142,
/**/