aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_getln.c
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-07-18 00:20:21 +0300
committerZyX <kp-pav@yandex.ru>2017-07-18 00:20:21 +0300
commit8a581b918b339b84b5abd80919416a84932eb13f (patch)
treeef7601643e29b5c42038de9cf2ab1cc8ec00c6cf /src/nvim/ex_getln.c
parentcfb1d937a64fcec836fdf26d6ea67024aeafabeb (diff)
downloadrneovim-8a581b918b339b84b5abd80919416a84932eb13f.tar.gz
rneovim-8a581b918b339b84b5abd80919416a84932eb13f.tar.bz2
rneovim-8a581b918b339b84b5abd80919416a84932eb13f.zip
ex_getln: Check prev_prompt_errors before running redrawcmdline
Otherwise there will be infinite recursion and shortly a crash. Running redrawcmdline recursively occurs under color_cmdline_error label.
Diffstat (limited to 'src/nvim/ex_getln.c')
-rw-r--r--src/nvim/ex_getln.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index 13bae4dadc..4be0dd0e0d 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -2364,6 +2364,12 @@ static bool color_cmdline(void)
bool dgc_ret = true;
bool tl_ret = true;
+ if (ccline.prompt_id != prev_prompt_id) {
+ prev_prompt_errors = 0;
+ prev_prompt_id = ccline.prompt_id;
+ } else if (prev_prompt_errors >= MAX_CB_ERRORS) {
+ goto color_cmdline_end;
+ }
if (ccline.highlight_callback.type != kCallbackNone) {
// Currently this should only happen while processing input() prompts.
assert(ccline.input_fn);
@@ -2392,12 +2398,6 @@ static bool color_cmdline(void)
if (color_cb.type == kCallbackNone) {
goto color_cmdline_end;
}
- if (ccline.prompt_id != prev_prompt_id) {
- prev_prompt_errors = 0;
- prev_prompt_id = ccline.prompt_id;
- } else if (prev_prompt_errors >= MAX_CB_ERRORS) {
- goto color_cmdline_end;
- }
if (ccline.cmdbuff[ccline.cmdlen] != NUL) {
arg_allocated = true;
arg.vval.v_string = xmemdupz((const char *)ccline.cmdbuff,