summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2015-01-14 14:04:10 +0100
committerBram Moolenaar <bram@vim.org>2015-01-14 14:04:10 +0100
commit3b7af11f33848211e058141cf85bffa9e3cfb5dc (patch)
tree00f05f812bbf2dc102ff9e616982cb376dfe3ccf
parent4f6f641731521623adab5213b2dd29aee3c2a2b1 (diff)
downloadvim-3b7af11f33848211e058141cf85bffa9e3cfb5dc.tar.gz
updated for version 7.4.570v7.4.570v7-4-570
Problem: Building with dynamic library does not work for Ruby 2.2.0 Solution: Change #ifdefs and #defines. (Ken Takata)
-rw-r--r--src/if_ruby.c32
-rw-r--r--src/version.c2
2 files changed, 32 insertions, 2 deletions
diff --git a/src/if_ruby.c b/src/if_ruby.c
index eb6141fb..3b9f4766 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -96,11 +96,15 @@
# define rb_num2int rb_num2int_stub
#endif
-#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 21
+#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER == 21
/* Ruby 2.1 adds new GC called RGenGC and RARRAY_PTR uses
* rb_gc_writebarrier_unprotect_promoted if USE_RGENGC */
# define rb_gc_writebarrier_unprotect_promoted rb_gc_writebarrier_unprotect_promoted_stub
#endif
+#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 22
+# define rb_gc_writebarrier_unprotect rb_gc_writebarrier_unprotect_stub
+# define rb_check_type rb_check_type_stub
+#endif
#include <ruby.h>
#ifdef RUBY19_OR_LATER
@@ -180,7 +184,9 @@ static void ruby_vim_init(void);
*/
# define rb_assoc_new dll_rb_assoc_new
# define rb_cObject (*dll_rb_cObject)
-# define rb_check_type dll_rb_check_type
+# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 22
+# define rb_check_type dll_rb_check_type
+# endif
# define rb_class_path dll_rb_class_path
# define rb_data_object_alloc dll_rb_data_object_alloc
# define rb_define_class_under dll_rb_define_class_under
@@ -382,7 +388,11 @@ static void* (*ruby_process_options)(int, char**);
# endif
# if defined(USE_RGENGC) && USE_RGENGC
+# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER == 21
static void (*dll_rb_gc_writebarrier_unprotect_promoted)(VALUE);
+# else
+static void (*dll_rb_gc_writebarrier_unprotect)(VALUE obj);
+# endif
# endif
# if defined(RUBY19_OR_LATER) && !defined(PROTO)
@@ -420,10 +430,24 @@ VALUE rb_num2ulong(VALUE x)
/* Do not generate a prototype here, VALUE isn't always defined. */
# if defined(USE_RGENGC) && USE_RGENGC && !defined(PROTO)
+# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER == 21
void rb_gc_writebarrier_unprotect_promoted_stub(VALUE obj)
{
dll_rb_gc_writebarrier_unprotect_promoted(obj);
}
+# else
+void rb_gc_writebarrier_unprotect_stub(VALUE obj)
+{
+ dll_rb_gc_writebarrier_unprotect(obj);
+}
+# endif
+# endif
+
+# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 22
+void rb_check_type_stub(VALUE v, int i)
+{
+ dll_rb_check_type(v, i);
+}
# endif
static HINSTANCE hinstRuby = NULL; /* Instance of ruby.dll */
@@ -542,7 +566,11 @@ static struct
{"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack},
# endif
# if defined(USE_RGENGC) && USE_RGENGC
+# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER == 21
{"rb_gc_writebarrier_unprotect_promoted", (RUBY_PROC*)&dll_rb_gc_writebarrier_unprotect_promoted},
+# else
+ {"rb_gc_writebarrier_unprotect", (RUBY_PROC*)&dll_rb_gc_writebarrier_unprotect},
+# endif
# endif
{"", NULL},
};
diff --git a/src/version.c b/src/version.c
index a1b14941..b6e75563 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 570,
+/**/
569,
/**/
568,