To: vim_dev@googlegroups.com Subject: Patch 7.3.088 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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 #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 -- Bram@Moolenaar.net -- 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 ///