updated for version 7.2-279
diff --git a/src/ops.c b/src/ops.c
index b21f4c2..e5db313 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2020,6 +2020,7 @@
bd.is_MAX = (curwin->w_curswant == MAXCOL);
for ( ; curwin->w_cursor.lnum <= oap->end.lnum; ++curwin->w_cursor.lnum)
{
+ curwin->w_cursor.col = 0; /* make sure cursor position is valid */
block_prep(oap, &bd, curwin->w_cursor.lnum, TRUE);
if (bd.textlen == 0 && (!virtual_op || bd.is_MAX))
continue; /* nothing to replace */
@@ -2035,6 +2036,7 @@
{
pos_T vpos;
+ vpos.lnum = curwin->w_cursor.lnum;
getvpos(&vpos, oap->start_vcol);
bd.startspaces += vpos.coladd;
n = bd.startspaces;
@@ -2693,11 +2695,8 @@
* initial coladd offset as part of "startspaces" */
if (bd.is_short)
{
- linenr_T lnum = curwin->w_cursor.lnum;
-
- curwin->w_cursor.lnum = linenr;
+ vpos.lnum = linenr;
(void)getvpos(&vpos, oap->start_vcol);
- curwin->w_cursor.lnum = lnum;
}
else
vpos.coladd = 0;