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

ruby-changes:6005

From: usa <ko1@a...>
Date: Sun, 22 Jun 2008 00:45:53 +0900 (JST)
Subject: [ruby-changes:6005] Ruby:r17514 (trunk): * win32/win32.c (rb_w32_osid, rb_w32_osver, CreateChild): XP is

usa	2008-06-22 00:45:16 +0900 (Sun, 22 Jun 2008)

  New Revision: 17514

  Modified files:
    trunk/ChangeLog
    trunk/win32/win32.c

  Log:
    * win32/win32.c (rb_w32_osid, rb_w32_osver, CreateChild): XP is
      is different from Vista about pipe handle inheritance.
      fixed [ruby-core:17367]
    


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/win32/win32.c?r1=17514&r2=17513&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=17514&r2=17513&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 17513)
+++ ChangeLog	(revision 17514)
@@ -1,3 +1,9 @@
+Sun Jun 22 00:42:02 2008  NAKAMURA Usaku  <usa@r...>
+
+	* win32/win32.c (rb_w32_osid, rb_w32_osver, CreateChild): XP is
+	  is different from Vista about pipe handle inheritance.
+	  fixed [ruby-core:17367]
+
 Sun Jun 22 00:38:45 2008  NAKAMURA Usaku  <usa@r...>
 
 	* README.EXT.ja: add note about mark and free.
Index: win32/win32.c
===================================================================
--- win32/win32.c	(revision 17513)
+++ win32/win32.c	(revision 17514)
@@ -200,14 +200,13 @@
 
 static const char *NTLoginName;
 
+static OSVERSIONINFO osver;
 #ifdef WIN95
 static DWORD Win32System = (DWORD)-1;
 
 DWORD
 rb_w32_osid(void)
 {
-    static OSVERSIONINFO osver;
-
     if (osver.dwPlatformId != Win32System) {
 	memset(&osver, 0, sizeof(OSVERSIONINFO));
 	osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
@@ -217,7 +216,20 @@
     return (Win32System);
 }
 #endif
+static DWORD Win32Version = (DWORD)-1;
 
+static DWORD
+rb_w32_osver(void)
+{
+    if (osver.dwMajorVersion != Win32Version) {
+	memset(&osver, 0, sizeof(OSVERSIONINFO));
+	osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+	GetVersionEx(&osver);
+	Win32Version = osver.dwMajorVersion;
+    }
+    return (Win32Version);
+}
+
 #define IsWinNT() rb_w32_iswinnt()
 #define IsWin95() rb_w32_iswin95()
 
@@ -882,7 +894,7 @@
     if (!psa) {
 	sa.nLength              = sizeof (SECURITY_ATTRIBUTES);
 	sa.lpSecurityDescriptor = NULL;
-	sa.bInheritHandle       = FALSE;
+	sa.bInheritHandle       = IsWinNT() && rb_w32_osver() > 5 ? FALSE : TRUE;
 	psa = &sa;
     }
 

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

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