]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.088 v7.3.088
authorBram Moolenaar <Bram@vim.org>
Fri, 24 Dec 2010 12:39:35 +0000 (13:39 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 24 Dec 2010 12:39:35 +0000 (13:39 +0100)
Problem:    Ruby can't load Gems sometimes, may cause a crash.
Solution:   Undefine off_t.  Use ruby_process_options(). (Yasuhiro Matsumoto)

src/if_ruby.c
src/version.c

index 18e43f481ea290c5ceded28d39f4426b9c67baa1..0f108a1f8050af59f591072be4e65417a6b26576 100644 (file)
@@ -90,6 +90,7 @@
 # include <ruby/encoding.h>
 #endif
 
+#undef off_t   /* ruby defines off_t as _int64, Mingw uses long */
 #undef EXTERN
 #undef _
 
@@ -229,10 +230,10 @@ static void ruby_vim_init(void);
 # define rb_enc_find_index             dll_rb_enc_find_index
 # define rb_enc_find                   dll_rb_enc_find
 # define rb_enc_str_new                        dll_rb_enc_str_new
-# define rb_intern2                    dll_rb_intern2
-# define rb_const_remove               dll_rb_const_remove
 # define rb_sprintf                    dll_rb_sprintf
+# define rb_require                    dll_rb_require
 # define ruby_init_stack               dll_ruby_init_stack
+# define ruby_process_options          dll_ruby_process_options
 #endif
 
 /*
@@ -319,11 +320,10 @@ static void (*dll_ruby_script) (const char*);
 static int (*dll_rb_enc_find_index) (const char*);
 static rb_encoding* (*dll_rb_enc_find) (const char*);
 static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*);
-static ID (*dll_rb_intern2) (const char*, long);
-static void (*dll_Init_prelude) (void);
-static VALUE (*dll_rb_const_remove) (VALUE, ID);
 static VALUE (*dll_rb_sprintf) (const char*, ...);
+static VALUE (*dll_rb_require) (const char*);
 static void (*ruby_init_stack)(VALUE*);
+static void* (*ruby_process_options)(int, char**);
 #endif
 
 #ifdef RUBY19_OR_LATER
@@ -430,10 +430,10 @@ static struct
     {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
     {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find},
     {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new},
-    {"rb_intern2", (RUBY_PROC*)&dll_rb_intern2},
-    {"rb_const_remove", (RUBY_PROC*)&dll_rb_const_remove},
     {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf},
+    {"rb_require", (RUBY_PROC*)&dll_rb_require},
     {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack},
+    {"ruby_process_options", (RUBY_PROC*)&dll_ruby_process_options},
 #endif
     {"", NULL},
 };
@@ -663,18 +663,16 @@ static int ensure_ruby_initialized(void)
                ruby_init();
            }
 #ifdef RUBY19_OR_LATER
+           {
+               int dummy_argc = 2;
+               char *dummy_argv[] = {"vim-ruby", "-e0"};
+               ruby_process_options(dummy_argc, dummy_argv);
+           }
            ruby_script("vim-ruby");
-#endif
+#else
            ruby_init_loadpath();
-           ruby_io_init();
-#ifdef RUBY19_OR_LATER
-           rb_enc_find_index("encdb");
-
-           /* This avoids the error "Encoding::ConverterNotFoundError: code
-            * converter not found (UTF-16LE to ASCII-8BIT)". */
-           rb_define_module("Gem");
-           rb_const_remove(rb_cObject, rb_intern2("TMP_RUBY_PREFIX", 15));
 #endif
+           ruby_io_init();
            ruby_vim_init();
            ruby_initialized = 1;
 #ifdef DYNAMIC_RUBY
index 8c51226030cdec7c052535d4b45eba78afcf82ba..48e37b2937b319e5babf5d3f13224ae13366708e 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    88,
 /**/
     87,
 /**/