diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-07-06 11:37:53 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-07-17 11:37:41 -0300 |
commit | f180f6fdeb58f2c24ac8154a70ee6d9f22d434ad (patch) | |
tree | a4bc9910e12b8674ec60123aa1960827ebb16f12 /src | |
parent | 83cad98d5d4272adfc97f7c2cab0673b7d29a0a0 (diff) | |
download | rneovim-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.c | 2 |
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; |