зеркало из https://github.com/github/ruby.git
readline.c: fix type
* ext/readline/readline.c (getc_body): fix variable type, and extract _get_osfhandle. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57769 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
2e97d5bc42
Коммит
1ec805727e
|
@ -164,23 +164,24 @@ getc_body(struct getc_struct *p)
|
|||
#if defined(_WIN32)
|
||||
{
|
||||
INPUT_RECORD ir;
|
||||
int n;
|
||||
DWORD n;
|
||||
static int prior_key = '0';
|
||||
for (;;) {
|
||||
HANDLE h;
|
||||
if (prior_key > 0xff) {
|
||||
prior_key = rl_getc(p->input);
|
||||
return prior_key;
|
||||
}
|
||||
if (PeekConsoleInput((HANDLE)_get_osfhandle(p->fd), &ir, 1, &n)) {
|
||||
h = (HANDLE)_get_osfhandle(p->fd);
|
||||
if (PeekConsoleInput(h, &ir, 1, &n)) {
|
||||
if (n == 1) {
|
||||
if (ir.EventType == KEY_EVENT && ir.Event.KeyEvent.bKeyDown) {
|
||||
prior_key = rl_getc(p->input);
|
||||
return prior_key;
|
||||
} else {
|
||||
ReadConsoleInput((HANDLE)_get_osfhandle(p->fd), &ir, 1, &n);
|
||||
ReadConsoleInput(h, &ir, 1, &n);
|
||||
}
|
||||
} else {
|
||||
HANDLE h = (HANDLE)_get_osfhandle(p->fd);
|
||||
rb_w32_wait_events(&h, 1, INFINITE);
|
||||
}
|
||||
} else {
|
||||
|
|
Загрузка…
Ссылка в новой задаче