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;
|
before = 0;
|
||||||
after = wp->w_width - cells - win_col_off(wp) - padding;
|
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
|
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)
|
call StopVimInTerminal(buf)
|
||||||
endfunc
|
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()
|
func Test_prop_above_with_indent()
|
||||||
new
|
new
|
||||||
call setline(1, ['first line', ' second line', ' line below'])
|
call setline(1, ['first line', ' second line', ' line below'])
|
||||||
|
@@ -695,6 +695,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1482,
|
||||||
/**/
|
/**/
|
||||||
1481,
|
1481,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user