summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2023-03-26 21:27:24 +0100
committerBram Moolenaar <Bram@vim.org>2023-03-26 21:27:24 +0100
commit1a08a3e2a584889f19b84a27672134649b73da58 (patch)
tree097d180c223e66c3848d2d72ac840637ac6a428d
parentc174c2e58c9e24a75b189e01143e6d057b84e96e (diff)
patch 9.0.1429: invalid memory access when ending insert modev9.0.1429
Problem: Invalid memory access when ending insert mode. Solution: Check if the insert_skip value is valid.
-rw-r--r--src/edit.c6
-rw-r--r--src/version.c2
2 files changed, 5 insertions, 3 deletions
diff --git a/src/edit.c b/src/edit.c
index 84b6eef4b6..c23b0a8556 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -2438,12 +2438,12 @@ stop_insert(
* otherwise CTRL-O w and then <Left> will clear "last_insert".
*/
ptr = get_inserted();
- if (did_restart_edit == 0 || (ptr != NULL
- && (int)STRLEN(ptr) > new_insert_skip))
+ int added = ptr == NULL ? 0 : (int)STRLEN(ptr) - new_insert_skip;
+ if (did_restart_edit == 0 || added > 0)
{
vim_free(last_insert);
last_insert = ptr;
- last_insert_skip = new_insert_skip;
+ last_insert_skip = added < 0 ? 0 : new_insert_skip;
}
else
vim_free(ptr);
diff --git a/src/version.c b/src/version.c
index f25f59fc84..23e69b3433 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1429,
+/**/
1428,
/**/
1427,