forked from aniani/vim
patch 9.0.1482: crash when textprop has a very large "padding" value
Problem: Crash when textprop has a very large "padding" value. (Yegappan Lakshmanan) Solution: Avoid the "after" count to go negative.
This commit is contained in:
@@ -665,6 +665,12 @@ text_prop_position(
|
||||
{
|
||||
before = 0;
|
||||
after = wp->w_width - cells - win_col_off(wp) - padding;
|
||||
if (after < 0)
|
||||
{
|
||||
// text "above" has too much padding to fit
|
||||
padding += after;
|
||||
after = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
8
src/testdir/dumps/Test_prop_above_padding_1.dump
Normal file
8
src/testdir/dumps/Test_prop_above_padding_1.dump
Normal file
@@ -0,0 +1,8 @@
|
||||
> +0&#ffffff0@74
|
||||
|s|k|y| |i|s| |b|l|u|e| @63
|
||||
@74|…
|
||||
|o|c|e|a|n| |i|s| |b|l|u|e| @61
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|1|,|0|-|1| @8|A|l@1|
|
@@ -3199,6 +3199,26 @@ func Test_props_with_text_above()
|
||||
call StopVimInTerminal(buf)
|
||||
endfunc
|
||||
|
||||
func Test_prop_with_text_above_padding()
|
||||
CheckRunVimInTerminal
|
||||
|
||||
let lines =<< trim END
|
||||
vim9script
|
||||
|
||||
setlocal tabstop=8 noexpandtab
|
||||
setline(1, ['', 'sky is blue', 'ocean is blue'])
|
||||
prop_type_add('DiagVirtualText', {highlight: 'Search', override: true})
|
||||
prop_add(3, 0, {text: "┌─ start", text_align: "above",
|
||||
type: 'DiagVirtualText',
|
||||
text_padding_left: 200})
|
||||
END
|
||||
call writefile(lines, 'XscriptAbovePadding', 'D')
|
||||
let buf = RunVimInTerminal('-S XscriptAbovePadding', #{rows: 8})
|
||||
call VerifyScreenDump(buf, 'Test_prop_above_padding_1', {})
|
||||
|
||||
call StopVimInTerminal(buf)
|
||||
endfunc
|
||||
|
||||
func Test_prop_above_with_indent()
|
||||
new
|
||||
call setline(1, ['first line', ' second line', ' line below'])
|
||||
|
@@ -695,6 +695,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1482,
|
||||
/**/
|
||||
1481,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user