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

ruby-changes:14028

From: shyouhei <ko1@a...>
Date: Wed, 18 Nov 2009 14:15:35 +0900 (JST)
Subject: [ruby-changes:14028] Ruby:r25838 (ruby_1_8_7): merge revision(s) 24993:24997,25069:25074:

shyouhei	2009-11-18 14:13:34 +0900 (Wed, 18 Nov 2009)

  New Revision: 25838

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25838

  Log:
    merge revision(s) 24993:24997,25069:25074:
    * win32/win32.c (rb_w32_select): wait specified time on select.
    * win32/win32.c (rb_w32_select): on 1.8, we don't need to poll sockets,
      because our select is never called from multiple threads.
    * instruby.rb: win32/win32.h exists in srcdir.
      reported by arton ( http://www.artonx.org/diary/20090919.html#p01 )
    * win32/win32.c (subtract): if the parameters are same value, should
      return zero.
    * win32/win32.c (rb_w32_select): of course, need to initialize rest.

  Modified files:
    branches/ruby_1_8_7/ChangeLog
    branches/ruby_1_8_7/instruby.rb
    branches/ruby_1_8_7/version.h
    branches/ruby_1_8_7/win32/win32.c

Index: ruby_1_8_7/ChangeLog
===================================================================
--- ruby_1_8_7/ChangeLog	(revision 25837)
+++ ruby_1_8_7/ChangeLog	(revision 25838)
@@ -1,3 +1,26 @@
+Wed Nov 18 14:13:14 2009  NAKAMURA Usaku  <usa@r...>
+
+	* instruby.rb: win32/win32.h exists in srcdir.
+	  reported by arton ( http://www.artonx.org/diary/20090919.html#p01 )
+
+Wed Nov 18 14:13:14 2009  NAKAMURA Usaku  <usa@r...>
+
+	* win32/win32.c (subtract): if the parameters are same value, should
+	  return zero.
+
+Wed Nov 18 14:13:14 2009  NAKAMURA Usaku  <usa@r...>
+
+	* win32/win32.c (rb_w32_select): of course, need to initialize rest.
+
+Wed Nov 18 14:13:14 2009  NAKAMURA Usaku  <usa@r...>
+
+	* win32/win32.c (rb_w32_select): wait specified time on select.
+
+Wed Nov 18 14:13:14 2009  NAKAMURA Usaku  <usa@r...>
+
+	* win32/win32.c (rb_w32_select): on 1.8, we don't need to poll sockets,
+	  because our select is never called from multiple threads.
+
 Tue Nov 17 16:22:22 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* eval.c (rb_thread_start_0, rb_thread_start_1): should call star
Index: ruby_1_8_7/version.h
===================================================================
--- ruby_1_8_7/version.h	(revision 25837)
+++ ruby_1_8_7/version.h	(revision 25838)
@@ -1,15 +1,15 @@
 #define RUBY_VERSION "1.8.7"
-#define RUBY_RELEASE_DATE "2009-11-17"
+#define RUBY_RELEASE_DATE "2009-11-18"
 #define RUBY_VERSION_CODE 187
-#define RUBY_RELEASE_CODE 20091117
-#define RUBY_PATCHLEVEL 210
+#define RUBY_RELEASE_CODE 20091118
+#define RUBY_PATCHLEVEL 211
 
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 8
 #define RUBY_VERSION_TEENY 7
 #define RUBY_RELEASE_YEAR 2009
 #define RUBY_RELEASE_MONTH 11
-#define RUBY_RELEASE_DAY 17
+#define RUBY_RELEASE_DAY 18
 
 #ifdef RUBY_EXTERN
 RUBY_EXTERN const char ruby_version[];
Index: ruby_1_8_7/instruby.rb
===================================================================
--- ruby_1_8_7/instruby.rb	(revision 25837)
+++ ruby_1_8_7/instruby.rb	(revision 25838)
@@ -359,7 +359,7 @@
   if RUBY_PLATFORM =~ /mswin32|mingw|bccwin32/
     win32libdir = File.join(archlibdir, "win32")
     makedirs win32libdir
-    install "win32/win32.h", win32libdir, :mode => $data_mode
+    install File.join(srcdir, "win32", "win32.h"), win32libdir, :mode => $data_mode
   end
 end
 
Index: ruby_1_8_7/win32/win32.c
===================================================================
--- ruby_1_8_7/win32/win32.c	(revision 25837)
+++ ruby_1_8_7/win32/win32.c	(revision 25838)
@@ -2211,7 +2211,7 @@
     if (rest->tv_sec < wait->tv_sec) {
 	return 0;
     }
-    while (rest->tv_usec < wait->tv_usec) {
+    while (rest->tv_usec <= wait->tv_usec) {
 	if (rest->tv_sec <= wait->tv_sec) {
 	    return 0;
 	}
@@ -2305,6 +2305,7 @@
 	struct timeval zero;
 	wait.tv_sec = 0; wait.tv_usec = 10 * 1000; // 10ms
 	zero.tv_sec = 0; zero.tv_usec = 0;         //  0ms
+	if (timeout) rest = *timeout;
 	for (;;) {
 	    if (nonsock) {
 		// modifying {else,pipe,cons}_rd is safe because
@@ -2321,15 +2322,16 @@
 		break;
 	    }
 	    else {
-		struct timeval *dowait = &wait;
-
 		fd_set orig_rd;
 		fd_set orig_wr;
 		fd_set orig_ex;
+		struct timeval *dowait = &wait;
+		if (timeout && compare(&rest, &wait) < 0) dowait = &rest;
+
 		if (rd) orig_rd = *rd;
 		if (wr) orig_wr = *wr;
 		if (ex) orig_ex = *ex;
-		r = do_select(nfds, rd, wr, ex, &zero);	// polling
+		r = do_select(nfds, rd, wr, ex, dowait);
 		if (r != 0) break; // signaled or error
 		if (rd) *rd = orig_rd;
 		if (wr) *wr = orig_wr;
@@ -2340,9 +2342,7 @@
 		    gettimeofday(&now, NULL);
 		    rest = limit;
 		    if (!subtract(&rest, &now)) break;
-		    if (compare(&rest, &wait) < 0) dowait = &rest;
 		}
-		Sleep(dowait->tv_sec * 1000 + dowait->tv_usec / 1000);
 	    }
 	}
     }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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