[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]