aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2014-07-06 11:37:53 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-07-17 11:37:41 -0300
commitf180f6fdeb58f2c24ac8154a70ee6d9f22d434ad (patch)
treea4bc9910e12b8674ec60123aa1960827ebb16f12 /src
parent83cad98d5d4272adfc97f7c2cab0673b7d29a0a0 (diff)
downloadrneovim-f180f6fdeb58f2c24ac8154a70ee6d9f22d434ad.tar.gz
rneovim-f180f6fdeb58f2c24ac8154a70ee6d9f22d434ad.tar.bz2
rneovim-f180f6fdeb58f2c24ac8154a70ee6d9f22d434ad.zip
getchar: fix infinite loop due to pending events
The `inchar` function could enter an infinite loop if there are events pending to be processed when an interrupt is received.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/getchar.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c
index 541f0e5b0a..31fa6a702f 100644
--- a/src/nvim/getchar.c
+++ b/src/nvim/getchar.c
@@ -49,6 +49,7 @@
#include "nvim/term.h"
#include "nvim/ui.h"
#include "nvim/undo.h"
+#include "nvim/os/event.h"
/*
* These buffers are used for storing:
@@ -2472,6 +2473,7 @@ inchar (
char_u dum[DUM_LEN + 1];
for (;; ) {
+ event_process(true);
len = ui_inchar(dum, DUM_LEN, 0L, 0);
if (len == 0 || (len == 1 && dum[0] == 3))
break;