0
0
mirror of https://github.com/vim/vim.git synced 2025-10-09 06:14:17 -04:00

patch 7.4.870

Problem:    May get into an invalid state when using getchar() in an
            expression mapping.
Solution:   Anticipate mod_mask to change. (idea by Yukihiro Nakadaira)
This commit is contained in:
Bram Moolenaar
2015-09-15 18:29:39 +02:00
parent 3b59755862
commit 2455c4ede8
2 changed files with 6 additions and 1 deletions

View File

@@ -1630,13 +1630,16 @@ vgetc()
last_recorded_len = 0; last_recorded_len = 0;
for (;;) /* this is done twice if there are modifiers */ for (;;) /* this is done twice if there are modifiers */
{ {
int did_inc = FALSE;
if (mod_mask) /* no mapping after modifier has been read */ if (mod_mask) /* no mapping after modifier has been read */
{ {
++no_mapping; ++no_mapping;
++allow_keys; ++allow_keys;
did_inc = TRUE; /* mod_mask may change value */
} }
c = vgetorpeek(TRUE); c = vgetorpeek(TRUE);
if (mod_mask) if (did_inc)
{ {
--no_mapping; --no_mapping;
--allow_keys; --allow_keys;

View File

@@ -741,6 +741,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
870,
/**/ /**/
869, 869,
/**/ /**/