summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2015-09-15 18:29:39 +0200
committerBram Moolenaar <Bram@vim.org>2015-09-15 18:29:39 +0200
commit2455c4ede8d4ff6f0754977b548708eec08869eb (patch)
treeb7d7b05f47748ec495cbc739a2ed7378b5246722 /src
parent3b59755862f4604ded8155404a1fe4c84c606829 (diff)
patch 7.4.870v7.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)
Diffstat (limited to 'src')
-rw-r--r--src/getchar.c5
-rw-r--r--src/version.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/getchar.c b/src/getchar.c
index 87588a93ac..f4ec991b09 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1630,13 +1630,16 @@ vgetc()
last_recorded_len = 0;
for (;;) /* this is done twice if there are modifiers */
{
+ int did_inc = FALSE;
+
if (mod_mask) /* no mapping after modifier has been read */
{
++no_mapping;
++allow_keys;
+ did_inc = TRUE; /* mod_mask may change value */
}
c = vgetorpeek(TRUE);
- if (mod_mask)
+ if (did_inc)
{
--no_mapping;
--allow_keys;
diff --git a/src/version.c b/src/version.c
index bc1e5550ca..0cb1fc62b5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 870,
+/**/
869,
/**/
868,