Fix: ml_get errors when using undo with 'virtualedit'.

This commit is contained in:
Bram Moolenaar
2010-08-07 12:54:12 +02:00
parent c3d2c4478d
commit 0390ded91b

View File

@ -2591,18 +2591,21 @@ u_undoredo(undo)
if (curhead->uh_cursor.lnum + 1 == curwin->w_cursor.lnum if (curhead->uh_cursor.lnum + 1 == curwin->w_cursor.lnum
&& curwin->w_cursor.lnum > 1) && curwin->w_cursor.lnum > 1)
--curwin->w_cursor.lnum; --curwin->w_cursor.lnum;
if (curhead->uh_cursor.lnum == curwin->w_cursor.lnum) if (curwin->w_cursor.lnum <= curbuf->b_ml.ml_line_count)
{ {
curwin->w_cursor.col = curhead->uh_cursor.col; if (curhead->uh_cursor.lnum == curwin->w_cursor.lnum)
{
curwin->w_cursor.col = curhead->uh_cursor.col;
#ifdef FEAT_VIRTUALEDIT #ifdef FEAT_VIRTUALEDIT
if (virtual_active() && curhead->uh_cursor_vcol >= 0) if (virtual_active() && curhead->uh_cursor_vcol >= 0)
coladvance((colnr_T)curhead->uh_cursor_vcol); coladvance((colnr_T)curhead->uh_cursor_vcol);
else else
curwin->w_cursor.coladd = 0; curwin->w_cursor.coladd = 0;
#endif #endif
}
else
beginline(BL_SOL | BL_FIX);
} }
else if (curwin->w_cursor.lnum <= curbuf->b_ml.ml_line_count)
beginline(BL_SOL | BL_FIX);
else else
{ {
/* We get here with the current cursor line being past the end (eg /* We get here with the current cursor line being past the end (eg