From 5b263ac6adf76b025aed9c2edd30dbc35dd4e8cc Mon Sep 17 00:00:00 2001 From: Jurica Bradaric Date: Sat, 20 Feb 2016 19:11:25 +0100 Subject: vim-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) https://github.com/vim/vim/commit/2455c4ede8d4ff6f0754977b548708eec08869eb --- src/nvim/getchar.c | 10 ++++++---- src/nvim/version.c | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 89d22ad811..73b3de0b5d 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -1380,13 +1380,15 @@ int vgetc(void) } else { mod_mask = 0x0; last_recorded_len = 0; - for (;; ) { /* this is done twice if there are modifiers */ - if (mod_mask) { /* no mapping after modifier has been read */ + for (;; ) { // this is done twice if there are modifiers + bool 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) { + c = vgetorpeek(true); + if (did_inc) { --no_mapping; --allow_keys; } diff --git a/src/nvim/version.c b/src/nvim/version.c index 7d4b8982cd..813448ca40 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -420,7 +420,7 @@ static int included_patches[] = { // 873 NA // 872 NA // 871, - // 870, + 870, // 869 NA 868, // 867 NA -- cgit