changeset 2076:1c7a66d820e4 v7.2.360

updated for version 7.2.360 Problem: Ruby on MS-Windows: can't use sockets. Solution: Call NtInitialize() during initialization. (Ariya Mizutani)
author Bram Moolenaar <bram@zimbu.org>
date Wed, 17 Feb 2010 15:11:50 +0100
parents 903fcd726d90
children d8983769c9dd
files src/if_ruby.c src/version.c
diffstat 2 files changed, 16 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -48,6 +48,11 @@
 # endif
 #endif
 
+/* suggested by Ariya Mizutani */
+#if (_MSC_VER == 1200)
+# undef _WIN32_WINNT
+#endif
+
 #include <ruby.h>
 
 #undef EXTERN
@@ -132,6 +137,7 @@ static void ruby_vim_init(void);
 #define ruby_errinfo			(*dll_ruby_errinfo)
 #define ruby_init			dll_ruby_init
 #define ruby_init_loadpath		dll_ruby_init_loadpath
+#define NtInitialize			dll_NtInitialize
 #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
 # define rb_w32_snprintf		dll_rb_w32_snprintf
 #endif
@@ -186,6 +192,7 @@ static VALUE (*dll_rb_str_new2) (const c
 static VALUE *dll_ruby_errinfo;
 static void (*dll_ruby_init) (void);
 static void (*dll_ruby_init_loadpath) (void);
+static void (*dll_NtInitialize) (int*, char***);
 #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
 static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
 #endif
@@ -248,6 +255,7 @@ static struct
     {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
     {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
     {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
+    {"NtInitialize", (RUBY_PROC*)&dll_NtInitialize},
 #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
     {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
 #endif
@@ -414,6 +422,12 @@ static int ensure_ruby_initialized(void)
 	if (ruby_enabled(TRUE))
 	{
 #endif
+#ifdef _WIN32
+	    /* suggested by Ariya Mizutani */
+	    int argc = 1;
+	    char *argv[] = {"gvim.exe"};
+	    NtInitialize(&argc, &argv);
+#endif
 	    ruby_init();
 	    ruby_init_loadpath();
 	    ruby_io_init();
--- a/src/version.c
+++ b/src/version.c
@@ -682,6 +682,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    360,
+/**/
     359,
 /**/
     358,