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 87588a9..f4ec991 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1630,13 +1630,16 @@
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 bc1e555..0cb1fc6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 870,
+/**/
869,
/**/
868,