1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* win32/win32.c (rb_w32_read): fixed more for readline, and so on. [ruby-core:33511]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30104 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tarui 2010-12-06 15:29:45 +00:00
parent 03693cd590
commit 88ab39f6ab
2 changed files with 12 additions and 1 deletions

View file

@ -1,3 +1,8 @@
Tue Dec 7 00:27:14 2010 Masaya Tarui <tarui@ruby-lnag.org>
* win32/win32.c (rb_w32_read): fixed more for readline,
and so on. [ruby-core:33511]
Mon Dec 6 23:18:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* test/mkmf/base.rb (TestMkmf#setup): run quietly.

View file

@ -5028,6 +5028,7 @@ rb_w32_read(int fd, void *buf, size_t size)
size_t ret;
OVERLAPPED ol, *pol = NULL;
BOOL isconsole;
BOOL islineinput;
int start = 0;
if (is_socket(sock))
@ -5052,6 +5053,11 @@ rb_w32_read(int fd, void *buf, size_t size)
ret = 0;
isconsole = is_console(_osfhnd(fd));
if(isconsole){
DWORD mode;
GetConsoleMode((HANDLE)_osfhnd(fd),&mode);
islineinput = (mode & ENABLE_LINE_INPUT) != 0;
}
retry:
/* get rid of console reading bug */
if (isconsole) {
@ -5154,7 +5160,7 @@ rb_w32_read(int fd, void *buf, size_t size)
ret += read;
if (read >= len) {
buf = (char *)buf + read;
if (!(isconsole && len == 1 && *((char *)buf - 1) == '\n') && size > 0)
if (!(isconsole && len == 1 && (!islineinput || *((char *)buf - 1) == '\n')) && size > 0)
goto retry;
}
if (read == 0)