Problem: Invalid memory access when ending insert mode.
Solution: Check if the insert_skip value is valid.
* 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);
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1429,
/**/
1428,
/**/