1
0
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:
Bram Moolenaar
2023-04-23 21:42:25 +01:00
parent aae583441b
commit 2354b66ac5
4 changed files with 36 additions and 0 deletions

View File

@@ -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
{

View 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|

View File

@@ -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'])

View File

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