summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2009-05-26 09:02:10 +0000
committerBram Moolenaar <Bram@vim.org>2009-05-26 09:02:10 +0000
commit4be506815db49371c7720e14b1bbe573c44978fe (patch)
treebee8975a107325d4443dd1d1c71fc21fc29c7af3
parentc0a6fac5afcf9a38f4d4d73fceb0d29d5b45a314 (diff)
updated for version 7.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 4cb727cdc8..c1935c21cc 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 f9860ecbcd..d744a02329 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,