mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.0.1695: Crash with overlong textprop above
Problem: Crash with overlong textprop above Solution: Consider only positive padding closes: #12665 closes: #12661 Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
parent
bacc83009b
commit
f1cc4d55b9
@ -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;
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
8
src/testdir/dumps/Test_prop_long_above_1.dump
Normal file
8
src/testdir/dumps/Test_prop_long_above_1.dump
Normal file
@ -0,0 +1,8 @@
|
||||
|t+0#ffffff16#ff404010|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g|.| |t|h|e| |q|u|i|c|k| |b|r|o|w|n
|
||||
>x+0#0000000#ffffff0@2| @56
|
||||
|y@2| @56
|
||||
|~+0#4040ff13&| @58
|
||||
|~| @58
|
||||
|~| @58
|
||||
|~| @58
|
||||
| +0#0000000&@41|1|,|1|-|6|1| @7|A|l@1|
|
@ -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
|
||||
|
@ -695,6 +695,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1695,
|
||||
/**/
|
||||
1694,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user