components/vim/vim72-patches/7.2.387
changeset 198 172fc01ce997
equal deleted inserted replaced
197:fd801ec0737c 198:172fc01ce997
       
     1 To: [email protected]
       
     2 Subject: Patch 7.2.387
       
     3 Fcc: outbox
       
     4 From: Bram Moolenaar <[email protected]>
       
     5 Mime-Version: 1.0
       
     6 Content-Type: text/plain; charset=UTF-8
       
     7 Content-Transfer-Encoding: 8bit
       
     8 ------------
       
     9 
       
    10 Patch 7.2.387
       
    11 Problem:    Ruby with MingW still doesn't build all versions.
       
    12 Solution:   More #ifdefs for the  Ruby code. (Sergey Khorev)
       
    13 Files:	    src/if_ruby.c
       
    14 
       
    15 
       
    16 *** ../vim-7.2.386/src/if_ruby.c	2010-02-24 15:47:58.000000000 +0100
       
    17 --- src/if_ruby.c	2010-03-10 12:40:30.000000000 +0100
       
    18 ***************
       
    19 *** 39,46 ****
       
    20   # define rb_cTrueClass		(*dll_rb_cTrueClass)
       
    21   # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
       
    22   /*
       
    23 !  * On ver 1.8, all Ruby functions are exported with "__declspce(dllimport)"
       
    24 !  * in ruby.h.  But it cause trouble for these variables, because it is
       
    25    * defined in this file.  When defined this RUBY_EXPORT it modified to
       
    26    * "extern" and be able to avoid this problem.
       
    27    */
       
    28 --- 39,46 ----
       
    29   # define rb_cTrueClass		(*dll_rb_cTrueClass)
       
    30   # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
       
    31   /*
       
    32 !  * On ver 1.8, all Ruby functions are exported with "__declspec(dllimport)"
       
    33 !  * in ruby.h.  But it causes trouble for these variables, because it is
       
    34    * defined in this file.  When defined this RUBY_EXPORT it modified to
       
    35    * "extern" and be able to avoid this problem.
       
    36    */
       
    37 ***************
       
    38 *** 53,58 ****
       
    39 --- 53,65 ----
       
    40   # undef _WIN32_WINNT
       
    41   #endif
       
    42   
       
    43 + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
       
    44 + /* Ruby 1.9 defines a number of static functions which use rb_num2long and
       
    45 +  * rb_int2big */
       
    46 + # define rb_num2long rb_num2long_stub
       
    47 + # define rb_int2big rb_int2big_stub
       
    48 + #endif
       
    49 + 
       
    50   #include <ruby.h>
       
    51   #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
       
    52   # include <ruby/encoding.h>
       
    53 ***************
       
    54 *** 159,165 ****
       
    55   #define rb_str_concat			dll_rb_str_concat
       
    56   #define rb_str_new			dll_rb_str_new
       
    57   #define rb_str_new2			dll_rb_str_new2
       
    58 ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
       
    59   # define rb_errinfo			dll_rb_errinfo
       
    60   #else
       
    61   # define ruby_errinfo			(*dll_ruby_errinfo)
       
    62 --- 166,179 ----
       
    63   #define rb_str_concat			dll_rb_str_concat
       
    64   #define rb_str_new			dll_rb_str_new
       
    65   #define rb_str_new2			dll_rb_str_new2
       
    66 ! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
       
    67 ! # define rb_string_value_ptr		dll_rb_string_value_ptr
       
    68 ! # define rb_float_new			dll_rb_float_new
       
    69 ! # define rb_ary_new			dll_rb_ary_new
       
    70 ! # define rb_ary_push			dll_rb_ary_push
       
    71 ! #endif
       
    72 ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
       
    73 !     || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
       
    74   # define rb_errinfo			dll_rb_errinfo
       
    75   #else
       
    76   # define ruby_errinfo			(*dll_ruby_errinfo)
       
    77 ***************
       
    78 *** 226,232 ****
       
    79   static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
       
    80   static VALUE (*dll_rb_str_new) (const char*, long);
       
    81   static VALUE (*dll_rb_str_new2) (const char*);
       
    82 ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
       
    83   static VALUE (*dll_rb_errinfo) (void);
       
    84   #else
       
    85   static VALUE *dll_ruby_errinfo;
       
    86 --- 240,247 ----
       
    87   static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
       
    88   static VALUE (*dll_rb_str_new) (const char*, long);
       
    89   static VALUE (*dll_rb_str_new2) (const char*);
       
    90 ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
       
    91 !     || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
       
    92   static VALUE (*dll_rb_errinfo) (void);
       
    93   #else
       
    94   static VALUE *dll_ruby_errinfo;
       
    95 ***************
       
    96 *** 235,240 ****
       
    97 --- 250,264 ----
       
    98   static void (*dll_ruby_init_loadpath) (void);
       
    99   static void (*dll_NtInitialize) (int*, char***);
       
   100   #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
       
   101 + static char * (*dll_rb_string_value_ptr) (volatile VALUE*);
       
   102 + static VALUE (*dll_rb_float_new) (double);
       
   103 + static VALUE (*dll_rb_ary_new) (void);
       
   104 + static VALUE (*dll_rb_ary_push) (VALUE, VALUE);
       
   105 + #endif
       
   106 + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
       
   107 + static VALUE (*dll_rb_int2big)(SIGNED_VALUE);
       
   108 + #endif
       
   109 + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
       
   110   static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...);
       
   111   #endif
       
   112   
       
   113 ***************
       
   114 *** 246,251 ****
       
   115 --- 270,286 ----
       
   116   static VALUE (*dll_rb_sprintf) (const char*, ...);
       
   117   #endif
       
   118   
       
   119 + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
       
   120 + static SIGNED_VALUE rb_num2long_stub(VALUE x)
       
   121 + {
       
   122 +     return dll_rb_num2long(x);
       
   123 + }
       
   124 + static VALUE rb_int2big_stub(SIGNED_VALUE x)
       
   125 + {
       
   126 +     return dll_rb_int2big(x);
       
   127 + }
       
   128 + #endif
       
   129 + 
       
   130   static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */
       
   131   
       
   132   /*
       
   133 ***************
       
   134 *** 301,317 ****
       
   135       {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
       
   136       {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
       
   137       {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
       
   138 ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
       
   139       {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo},
       
   140   #else
       
   141       {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
       
   142   #endif
       
   143       {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
       
   144       {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
       
   145 !     {"NtInitialize", (RUBY_PROC*)&dll_NtInitialize},
       
   146   #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
       
   147       {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
       
   148   #endif
       
   149   #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
       
   150       {"ruby_script", (RUBY_PROC*)&dll_ruby_script},
       
   151       {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
       
   152 --- 336,368 ----
       
   153       {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
       
   154       {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
       
   155       {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
       
   156 ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
       
   157 !     || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
       
   158       {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo},
       
   159   #else
       
   160       {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo},
       
   161   #endif
       
   162       {"ruby_init", (RUBY_PROC*)&dll_ruby_init},
       
   163       {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath},
       
   164 !     {
       
   165 ! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 19
       
   166 !     "NtInitialize",
       
   167 ! #else
       
   168 !     "ruby_sysinit",
       
   169 ! #endif
       
   170 ! 			(RUBY_PROC*)&dll_NtInitialize},
       
   171   #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
       
   172       {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf},
       
   173   #endif
       
   174 + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
       
   175 +     {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr},
       
   176 +     {"rb_float_new", (RUBY_PROC*)&dll_rb_float_new},
       
   177 +     {"rb_ary_new", (RUBY_PROC*)&dll_rb_ary_new},
       
   178 +     {"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push},
       
   179 + #endif
       
   180 + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
       
   181 +     {"rb_int2big", (RUBY_PROC*)&dll_rb_int2big},
       
   182 + #endif
       
   183   #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
       
   184       {"ruby_script", (RUBY_PROC*)&dll_ruby_script},
       
   185       {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
       
   186 ***************
       
   187 *** 569,575 ****
       
   188   static void error_print(int state)
       
   189   {
       
   190   #ifndef DYNAMIC_RUBY
       
   191 ! #if !(defined(RUBY_VERSION) &&  RUBY_VERSION >= 19)
       
   192       RUBYEXTERN VALUE ruby_errinfo;
       
   193   #endif
       
   194   #endif
       
   195 --- 620,627 ----
       
   196   static void error_print(int state)
       
   197   {
       
   198   #ifndef DYNAMIC_RUBY
       
   199 ! #if !(defined(RUBY_VERSION) && RUBY_VERSION >= 19) \
       
   200 !     && !(defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19)
       
   201       RUBYEXTERN VALUE ruby_errinfo;
       
   202   #endif
       
   203   #endif
       
   204 ***************
       
   205 *** 605,611 ****
       
   206   	break;
       
   207       case TAG_RAISE:
       
   208       case TAG_FATAL:
       
   209 ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19
       
   210   	eclass = CLASS_OF(rb_errinfo());
       
   211   	einfo = rb_obj_as_string(rb_errinfo());
       
   212   #else
       
   213 --- 657,664 ----
       
   214   	break;
       
   215       case TAG_RAISE:
       
   216       case TAG_FATAL:
       
   217 ! #if defined(RUBY_VERSION) && RUBY_VERSION >= 19 \
       
   218 !     || defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19
       
   219   	eclass = CLASS_OF(rb_errinfo());
       
   220   	einfo = rb_obj_as_string(rb_errinfo());
       
   221   #else
       
   222 *** ../vim-7.2.386/src/version.c	2010-03-10 12:24:44.000000000 +0100
       
   223 --- src/version.c	2010-03-10 12:45:55.000000000 +0100
       
   224 ***************
       
   225 *** 683,684 ****
       
   226 --- 683,686 ----
       
   227   {   /* Add new patch number below this line */
       
   228 + /**/
       
   229 +     387,
       
   230   /**/
       
   231 
       
   232 -- 
       
   233 Vim is like Emacs without all the typing.  (John "Johann" Spetz)
       
   234 
       
   235  /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
       
   236 ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
       
   237 \\\        download, build and distribute -- http://www.A-A-P.org        ///
       
   238  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///