Check that stdin is readable before calling read

This should not be necessary, but it works around a bug in WSL.

Fixes #3112
This commit is contained in:
Maxime Coste 2019-10-08 18:38:05 +11:00
parent 2f1be14b5f
commit a2993ea104

View File

@ -5,6 +5,7 @@
#include "keys.hh" #include "keys.hh"
#include "ranges.hh" #include "ranges.hh"
#include "string_utils.hh" #include "string_utils.hh"
#include "file.hh"
#include <algorithm> #include <algorithm>
@ -579,7 +580,7 @@ Optional<Key> NCursesUI::get_next_key()
static auto get_char = []() -> Optional<unsigned char> { static auto get_char = []() -> Optional<unsigned char> {
unsigned char c = 0; unsigned char c = 0;
if (read(STDIN_FILENO, &c, 1) == 1) if (fd_readable(STDIN_FILENO) and read(STDIN_FILENO, &c, 1) == 1)
return c; return c;
return {}; return {};
}; };