Patch 7.3.088
Problem:    Ruby can't load Gems sometimes, may cause a crash.
Solution:   Undefine off_t.  Use ruby_process_options(). (Yasuhiro Matsumoto)
Files:      src/if_ruby.c


*** ../vim-7.3.087/src/if_ruby.c        2010-12-08 13:11:15.000000000 +0100
--- src/if_ruby.c       2010-12-24 12:18:31.000000000 +0100
***************
*** 90,95 ****
--- 90,96 ----
  # include <ruby/encoding.h>
  #endif
  
+ #undef off_t  /* ruby defines off_t as _int64, Mingw uses long */
  #undef EXTERN
  #undef _
  
***************
*** 229,238 ****
  # 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 ruby_init_stack              dll_ruby_init_stack
  #endif
  
  /*
--- 230,239 ----
  # 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_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,329 ****
  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 void (*ruby_init_stack)(VALUE*);
  #endif
  
  #ifdef RUBY19_OR_LATER
--- 320,329 ----
  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 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,439 ****
      {"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},
      {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack},
  #endif
      {"", NULL},
  };
--- 430,439 ----
      {"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_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,680 ****
                ruby_init();
            }
  #ifdef RUBY19_OR_LATER
            ruby_script("vim-ruby");
! #endif
            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_vim_init();
            ruby_initialized = 1;
  #ifdef DYNAMIC_RUBY
--- 663,678 ----
                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");
! #else
            ruby_init_loadpath();
  #endif
+           ruby_io_init();
            ruby_vim_init();
            ruby_initialized = 1;
  #ifdef DYNAMIC_RUBY
*** ../vim-7.3.087/src/version.c        2010-12-17 20:23:56.000000000 +0100
--- src/version.c       2010-12-24 13:38:51.000000000 +0100
***************
*** 716,717 ****
--- 716,719 ----
  {   /* Add new patch number below this line */
+ /**/
+     88,
  /**/

-- 
It is hard to understand how a cemetery raised its burial
cost and blamed it on the cost of living.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui