To: vim-dev@vim.org Subject: Patch 7.2.387 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.2.387 Problem: Ruby with MingW still doesn't build all versions. Solution: More #ifdefs for the Ruby code. (Sergey Khorev) Files: src/if_ruby.c *** ../vim-7.2.386/src/if_ruby.c 2010-02-24 15:47:58.000000000 +0100 --- src/if_ruby.c 2010-03-10 12:40:30.000000000 +0100 *************** *** 39,46 **** # define rb_cTrueClass (*dll_rb_cTrueClass) # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 /* ! * On ver 1.8, all Ruby functions are exported with "__declspce(dllimport)" ! * in ruby.h. But it cause trouble for these variables, because it is * defined in this file. When defined this RUBY_EXPORT it modified to * "extern" and be able to avoid this problem. */ --- 39,46 ---- # define rb_cTrueClass (*dll_rb_cTrueClass) # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 /* ! * On ver 1.8, all Ruby functions are exported with "__declspec(dllimport)" ! * in ruby.h. But it causes trouble for these variables, because it is * defined in this file. When defined this RUBY_EXPORT it modified to * "extern" and be able to avoid this problem. */ *************** *** 53,58 **** --- 53,65 ---- # undef _WIN32_WINNT #endif + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 + /* Ruby 1.9 defines a number of static functions which use rb_num2long and + * rb_int2big */ + # define rb_num2long rb_num2long_stub + # define rb_int2big rb_int2big_stub + #endif + #include #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 # include *************** *** 159,165 **** #define rb_str_concat dll_rb_str_concat #define rb_str_new dll_rb_str_new #define rb_str_new2 dll_rb_str_new2 ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 # define rb_errinfo dll_rb_errinfo #else # define ruby_errinfo (*dll_ruby_errinfo) --- 166,179 ---- #define rb_str_concat dll_rb_str_concat #define rb_str_new dll_rb_str_new #define rb_str_new2 dll_rb_str_new2 ! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 ! # define rb_string_value_ptr dll_rb_string_value_ptr ! # define rb_float_new dll_rb_float_new ! # define rb_ary_new dll_rb_ary_new ! # define rb_ary_push dll_rb_ary_push ! #endif ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \ ! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 # define rb_errinfo dll_rb_errinfo #else # define ruby_errinfo (*dll_ruby_errinfo) *************** *** 226,232 **** static VALUE (*dll_rb_str_concat) (VALUE, VALUE); static VALUE (*dll_rb_str_new) (const char*, long); static VALUE (*dll_rb_str_new2) (const char*); ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 static VALUE (*dll_rb_errinfo) (void); #else static VALUE *dll_ruby_errinfo; --- 240,247 ---- static VALUE (*dll_rb_str_concat) (VALUE, VALUE); static VALUE (*dll_rb_str_new) (const char*, long); static VALUE (*dll_rb_str_new2) (const char*); ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \ ! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 static VALUE (*dll_rb_errinfo) (void); #else static VALUE *dll_ruby_errinfo; *************** *** 235,240 **** --- 250,264 ---- static void (*dll_ruby_init_loadpath) (void); static void (*dll_NtInitialize) (int*, char***); #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + static char * (*dll_rb_string_value_ptr) (volatile VALUE*); + static VALUE (*dll_rb_float_new) (double); + static VALUE (*dll_rb_ary_new) (void); + static VALUE (*dll_rb_ary_push) (VALUE, VALUE); + #endif + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 + static VALUE (*dll_rb_int2big)(SIGNED_VALUE); + #endif + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...); #endif *************** *** 246,251 **** --- 270,286 ---- static VALUE (*dll_rb_sprintf) (const char*, ...); #endif + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 + static SIGNED_VALUE rb_num2long_stub(VALUE x) + { + return dll_rb_num2long(x); + } + static VALUE rb_int2big_stub(SIGNED_VALUE x) + { + return dll_rb_int2big(x); + } + #endif + static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */ /* *************** *** 301,317 **** {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat}, {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new}, {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2}, ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo}, #else {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo}, #endif {"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 #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 {"ruby_script", (RUBY_PROC*)&dll_ruby_script}, {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index}, --- 336,368 ---- {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat}, {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new}, {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2}, ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \ ! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo}, #else {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo}, #endif {"ruby_init", (RUBY_PROC*)&dll_ruby_init}, {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath}, ! { ! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 19 ! "NtInitialize", ! #else ! "ruby_sysinit", ! #endif ! (RUBY_PROC*)&dll_NtInitialize}, #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf}, #endif + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr}, + {"rb_float_new", (RUBY_PROC*)&dll_rb_float_new}, + {"rb_ary_new", (RUBY_PROC*)&dll_rb_ary_new}, + {"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push}, + #endif + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 + {"rb_int2big", (RUBY_PROC*)&dll_rb_int2big}, + #endif #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 {"ruby_script", (RUBY_PROC*)&dll_ruby_script}, {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index}, *************** *** 569,575 **** static void error_print(int state) { #ifndef DYNAMIC_RUBY ! #if !(defined(RUBY_VERSION) && RUBY_VERSION >= 19) RUBYEXTERN VALUE ruby_errinfo; #endif #endif --- 620,627 ---- static void error_print(int state) { #ifndef DYNAMIC_RUBY ! #if !(defined(RUBY_VERSION) && RUBY_VERSION >= 19) \ ! && !(defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19) RUBYEXTERN VALUE ruby_errinfo; #endif #endif *************** *** 605,611 **** break; case TAG_RAISE: case TAG_FATAL: ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 eclass = CLASS_OF(rb_errinfo()); einfo = rb_obj_as_string(rb_errinfo()); #else --- 657,664 ---- break; case TAG_RAISE: case TAG_FATAL: ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \ ! || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19 eclass = CLASS_OF(rb_errinfo()); einfo = rb_obj_as_string(rb_errinfo()); #else *** ../vim-7.2.386/src/version.c 2010-03-10 12:24:44.000000000 +0100 --- src/version.c 2010-03-10 12:45:55.000000000 +0100 *************** *** 683,684 **** --- 683,686 ---- { /* Add new patch number below this line */ + /**/ + 387, /**/ -- Vim is like Emacs without all the typing. (John "Johann" Spetz) /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///