changeset 19627:6b1564fcab92 v8.2.0370

patch 8.2.0370: the typebuf_was_filled flag is sometimes not reset Commit: https://github.com/vim/vim/commit/e49b4bb89505fad28cf89f0891aef3e2d397919e Author: Bram Moolenaar <Bram@vim.org> Date: Wed Mar 11 13:01:40 2020 +0100 patch 8.2.0370: the typebuf_was_filled flag is sometimes not reset 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.
author Bram Moolenaar <Bram@vim.org>
date Wed, 11 Mar 2020 13:15:04 +0100
parents 86e69ebd8460
children a9fb9a329b79
files src/edit.c src/getchar.c src/version.c
diffstat 3 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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]);
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -421,6 +421,10 @@ flush_buffers(flush_buffers_T flush_type
 	// 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;
 }
 
--- 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,