Mercurial > vim
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; }