summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-03-11 13:01:40 +0100
committerBram Moolenaar <Bram@vim.org>2020-03-11 13:01:40 +0100
commite49b4bb89505fad28cf89f0891aef3e2d397919e (patch)
treed2495b040684048ef257f112bf84e32aa7d867ce
parent1671f4488105ee12a6a8558ae351436c26ab55fc (diff)
downloadvim-git-e49b4bb89505fad28cf89f0891aef3e2d397919e.tar.gz
patch 8.2.0370: the typebuf_was_filled flag is sometimes not resetv8.2.0370
Problem: The typebuf_was_filled flag is sometimes not reset, which may cause a hang. Solution: Make sure typebuf_was_filled is reset when the typeahead buffer is empty.
-rw-r--r--src/edit.c4
-rw-r--r--src/getchar.c7
-rw-r--r--src/version.c2
3 files changed, 13 insertions, 0 deletions
diff --git a/src/edit.c b/src/edit.c
index 70b8fee12..edd2374e8 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -1612,6 +1612,10 @@ decodeModifyOtherKeys(int c)
// Match, consume the code.
typebuf.tb_off += idx + 1;
typebuf.tb_len -= idx + 1;
+#if defined(FEAT_CLIENTSERVER) || defined(FEAT_EVAL)
+ if (typebuf.tb_len == 0)
+ typebuf_was_filled = FALSE;
+#endif
mod_mask = decode_modifiers(arg[!form]);
c = merge_modifyOtherKeys(arg[form]);
diff --git a/src/getchar.c b/src/getchar.c
index 7df4bcebc..6b1068dda 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -421,6 +421,10 @@ flush_buffers(flush_buffers_T flush_typeahead)
// remove mapped characters at the start only
typebuf.tb_off += typebuf.tb_maplen;
typebuf.tb_len -= typebuf.tb_maplen;
+#if defined(FEAT_CLIENTSERVER) || defined(FEAT_EVAL)
+ if (typebuf.tb_len == 0)
+ typebuf_was_filled = FALSE;
+#endif
}
else
{
@@ -1283,6 +1287,9 @@ alloc_typebuf(void)
typebuf.tb_no_abbr_cnt = 0;
if (++typebuf.tb_change_cnt == 0)
typebuf.tb_change_cnt = 1;
+#if defined(FEAT_CLIENTSERVER) || defined(FEAT_EVAL)
+ typebuf_was_filled = FALSE;
+#endif
return OK;
}
diff --git a/src/version.c b/src/version.c
index 0efa4f738..34eb68fb2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 370,
+/**/
369,
/**/
368,