vim-patch:9.0.0011: reading beyond the end of the line with put command (#19166)

Problem:    Reading beyond the end of the line with put command.
Solution:   Adjust the end mark position.
d25f003342
This commit is contained in:
zeertzjq
2022-06-30 20:16:00 +08:00
committed by GitHub
parent 37af46bb4c
commit 69cd0ba27b
2 changed files with 14 additions and 3 deletions

View File

@@ -3344,7 +3344,6 @@ void do_put(int regname, yankreg_T *reg, int dir, long count, int flags)
totlen = (size_t)(count * (yanklen + spaces)
+ bd.startspaces + bd.endspaces);
int addcount = (int)totlen + lines_appended;
newp = (char_u *)xmalloc(totlen + oldlen + 1);
// copy part up to cursor to new line
@@ -3366,7 +3365,7 @@ void do_put(int regname, yankreg_T *reg, int dir, long count, int flags)
memset(ptr, ' ', (size_t)spaces);
ptr += spaces;
} else {
addcount -= spaces;
totlen -= (size_t)spaces; // didn't use these spaces
}
}
@@ -3380,7 +3379,7 @@ void do_put(int regname, yankreg_T *reg, int dir, long count, int flags)
memmove(ptr, oldp + bd.textcol + delcount, (size_t)columns);
ml_replace(curwin->w_cursor.lnum, (char *)newp, false);
extmark_splice_cols(curbuf, (int)curwin->w_cursor.lnum - 1, bd.textcol,
delcount, addcount, kExtmarkUndo);
delcount, (int)totlen + lines_appended, kExtmarkUndo);
++curwin->w_cursor.lnum;
if (i == 0) {