From: Bram Moolenaar Date: Tue, 15 Sep 2015 16:29:39 +0000 (+0200) Subject: patch 7.4.870 X-Git-Tag: v7.4.870 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2455c4ede8d4ff6f0754977b548708eec08869eb;p=thirdparty%2Fvim.git 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) --- 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 @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 870, /**/ 869, /**/