0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.1.0840: getchar(0) never returns a character in the terminal

Problem:    getchar(0) never returns a character in the terminal.
Solution:   Call wait_func() at least once.
This commit is contained in:
Bram Moolenaar
2019-01-28 22:32:58 +01:00
parent f58d81a187
commit 12dfc9eef1
7 changed files with 36 additions and 13 deletions

View File

@@ -272,6 +272,7 @@ inchar_loop(
{
int len;
int interrupted = FALSE;
int did_call_wait_func = FALSE;
int did_start_blocking = FALSE;
long wait_time;
long elapsed_time = 0;
@@ -313,7 +314,11 @@ inchar_loop(
elapsed_time = ELAPSED_FUNC(start_tv);
#endif
wait_time -= elapsed_time;
if (wait_time <= 0)
// If the waiting time is now zero or less, we timed out. However,
// loop at least once to check for characters and events. Matters
// when "wtime" is zero.
if (wait_time <= 0 && did_call_wait_func)
{
if (wtime >= 0)
// no character available within "wtime"
@@ -374,6 +379,7 @@ inchar_loop(
// Wait for a character to be typed or another event, such as the winch
// signal or an event on the monitored file descriptors.
did_call_wait_func = TRUE;
if (wait_func(wait_time, &interrupted, FALSE))
{
// If input was put directly in typeahead buffer bail out here.