mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.2.4151: reading beyond the end of a line
Problem: Reading beyond the end of a line.
Solution: For block insert only use the offset for correcting the length.
57df9e8a9f
This commit is contained in:
parent
e662d86e8d
commit
afbed8cb75
@ -568,19 +568,8 @@ static void block_insert(oparg_T *oap, char_u *s, int b_insert, struct block_def
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (spaces > 0) {
|
if (spaces > 0) {
|
||||||
int off;
|
// avoid copying part of a multi-byte character
|
||||||
|
offset -= utf_head_off(oldp, oldp + offset);
|
||||||
// Avoid starting halfway through a multi-byte character.
|
|
||||||
if (b_insert) {
|
|
||||||
off = utf_head_off(oldp, oldp + offset + spaces);
|
|
||||||
spaces -= off;
|
|
||||||
count -= off;
|
|
||||||
} else {
|
|
||||||
// spaces fill the gap, the character that's at the edge moves
|
|
||||||
// right
|
|
||||||
off = utf_head_off(oldp, oldp + offset);
|
|
||||||
offset -= off;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (spaces < 0) { // can happen when the cursor was moved
|
if (spaces < 0) { // can happen when the cursor was moved
|
||||||
spaces = 0;
|
spaces = 0;
|
||||||
|
@ -1271,6 +1271,15 @@ func Test_visual_reselect_with_count()
|
|||||||
call delete('XvisualReselect')
|
call delete('XvisualReselect')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_visual_block_insert_round_off()
|
||||||
|
new
|
||||||
|
" The number of characters are tuned to fill a 4096 byte allocated block,
|
||||||
|
" so that valgrind reports going over the end.
|
||||||
|
call setline(1, ['xxxxx', repeat('0', 1350), "\t", repeat('x', 60)])
|
||||||
|
exe "normal gg0\<C-V>GI" .. repeat('0', 1320) .. "\<Esc>"
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
" this was leaving the end of the Visual area beyond the end of a line
|
" this was leaving the end of the Visual area beyond the end of a line
|
||||||
func Test_visual_ex_copy_line()
|
func Test_visual_ex_copy_line()
|
||||||
new
|
new
|
||||||
|
Loading…
Reference in New Issue
Block a user