Skip to content

Commit

Permalink
fix crash with overlong textproperty above
Browse files Browse the repository at this point in the history
fixes vim#12661
  • Loading branch information
chrisbra committed Jul 13, 2023
1 parent 440847a commit 08213b3
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/drawline.c
Original file line number Diff line number Diff line change
Expand Up @@ -721,7 +721,7 @@ text_prop_position(

// add 1 for NUL, 2 for when '…' is used
if (n_attr != NULL)
l = alloc(n_used + before + after + padding + 3);
l = alloc(n_used + before + after + (padding > 0 ? padding : 0) + 3);
if (n_attr == NULL || l != NULL)
{
int off = 0;
Expand Down Expand Up @@ -801,7 +801,7 @@ text_prop_position(

// n_attr_skip will not be decremented before draw_state is
// WL_LINE
*n_attr_skip = before + padding;
*n_attr_skip = before + (padding > 0 ? padding : 0);
}
}
}
Expand Down
19 changes: 19 additions & 0 deletions src/testdir/test_textprop.vim
Original file line number Diff line number Diff line change
Expand Up @@ -3951,5 +3951,24 @@ func Test_error_after_using_negative_id()
call StopVimInTerminal(buf)
endfunc

func Test_overlong_textprop_above_crash()
CheckRunVimInTerminal

let lines =<< trim END
vim9script
prop_type_add('PropType', {highlight: 'Error'})
setline(1, ['xxx ', 'yyy'])
prop_add(1, 0, {
type: 'PropType',
text: 'the quick brown fox jumps over the lazy dog. the quick brown fox jumps over the lazy dog. the quick brown fox jumps over the lazy dog.',
text_align: 'above',
text_wrap: 'wrap',
})
END
call writefile(lines, 'XtextPropLongAbove', 'D')
let buf = RunVimInTerminal('-S XtextPropLongAbove', #{rows: 8, cols: 60})
call VerifyScreenDump(buf, 'Test_prop_long_above_1', {})

call StopVimInTerminal(buf)
endfunc
" vim: shiftwidth=2 sts=2 expandtab

0 comments on commit 08213b3

Please sign in to comment.