ruby-changes:22341
From: shirosaki <ko1@a...>
Date: Sat, 28 Jan 2012 09:52:03 +0900 (JST)
Subject: [ruby-changes:22341] shirosaki:r34390 (trunk): * win32/win32.c (rb_w32_read): fix an issue that $stdin.read doesn't
shirosaki 2012-01-28 09:51:43 +0900 (Sat, 28 Jan 2012) New Revision: 34390 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34390 Log: * win32/win32.c (rb_w32_read): fix an issue that $stdin.read doesn't terminate by CTRL-C on Windows. [ruby-dev:45149] [Bug #5812] Modified files: trunk/ChangeLog trunk/win32/win32.c Index: ChangeLog =================================================================== --- ChangeLog (revision 34389) +++ ChangeLog (revision 34390) @@ -1,3 +1,9 @@ +Sat Jan 28 09:33:33 2012 Hiroshi Shirosaki <h.shirosaki@g...> + + * win32/win32.c (rb_w32_read): fix an issue that $stdin.read doesn't + terminate by CTRL-C on Windows. + [ruby-dev:45149] [Bug #5812] + Sat Jan 28 08:18:11 2012 Hiroshi Shirosaki <h.shirosaki@g...> * test/ruby/test_thread.rb Index: win32/win32.c =================================================================== --- win32/win32.c (revision 34389) +++ win32/win32.c (revision 34390) @@ -5575,6 +5575,10 @@ } } } + else { + err = GetLastError(); + errno = map_errno(err); + } if (pol) { CloseHandle(ol.hEvent); @@ -5591,7 +5595,8 @@ ret += read; if (read >= len) { buf = (char *)buf + read; - if (!(isconsole && len == 1 && (!islineinput || *((char *)buf - 1) == '\n')) && size > 0) + if (err != ERROR_OPERATION_ABORTED && + !(isconsole && len == 1 && (!islineinput || *((char *)buf - 1) == '\n')) && size > 0) goto retry; } if (read == 0) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/