summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvimboss <devnull@localhost>2009-05-26 09:02:10 +0000
committervimboss <devnull@localhost>2009-05-26 09:02:10 +0000
commitc861d7e38fa6e70356465a955fb7b5f307ca5237 (patch)
treebee8975a107325d4443dd1d1c71fc21fc29c7af3
parentba89fe33539992b9b1bd8d935a88dce1ab4745c2 (diff)
downloadvim-c861d7e38fa6e70356465a955fb7b5f307ca5237.tar.gz
updated for version 7.2-189v7.2.189v7-2-189
-rw-r--r--src/edit.c11
-rw-r--r--src/version.c2
2 files changed, 10 insertions, 3 deletions
diff --git a/src/edit.c b/src/edit.c
index 4cb727cd..c1935c21 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -6420,13 +6420,17 @@ stop_insert(end_insert_pos, esc)
/* If we just did an auto-indent, remove the white space from the end
* of the line, and put the cursor back.
- * Do this when ESC was used or moving the cursor up/down. */
+ * Do this when ESC was used or moving the cursor up/down.
+ * Check for the old position still being valid, just in case the text
+ * got changed unexpectedly. */
if (did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL
- && curwin->w_cursor.lnum != end_insert_pos->lnum)))
+ && curwin->w_cursor.lnum != end_insert_pos->lnum))
+ && end_insert_pos->lnum <= curbuf->b_ml.ml_line_count)
{
pos_T tpos = curwin->w_cursor;
curwin->w_cursor = *end_insert_pos;
+ check_cursor_col(); /* make sure it is not past the line */
for (;;)
{
if (gchar_cursor() == NUL && curwin->w_cursor.col > 0)
@@ -6434,7 +6438,8 @@ stop_insert(end_insert_pos, esc)
cc = gchar_cursor();
if (!vim_iswhite(cc))
break;
- (void)del_char(TRUE);
+ if (del_char(TRUE) == FAIL)
+ break; /* should not happen */
}
if (curwin->w_cursor.lnum != tpos.lnum)
curwin->w_cursor = tpos;
diff --git a/src/version.c b/src/version.c
index f9860ecb..d744a023 100644
--- a/src/version.c
+++ b/src/version.c
@@ -677,6 +677,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 189,
+/**/
188,
/**/
187,