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)

2455c4ede8
This commit is contained in:
Jurica Bradaric 2016-02-20 19:11:25 +01:00
parent 44024f2c65
commit 5b263ac6ad
2 changed files with 7 additions and 5 deletions

View File

@ -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;
}

View File

@ -420,7 +420,7 @@ static int included_patches[] = {
// 873 NA
// 872 NA
// 871,
// 870,
870,
// 869 NA
868,
// 867 NA