summaryrefslogtreecommitdiff
path: root/src/if_ruby.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-12-27 22:11:01 +0100
committerBram Moolenaar <Bram@vim.org>2018-12-27 22:11:01 +0100
commitb09c684195d803137d52c34fb4d3a410be5ac10f (patch)
treeaacd21c55d39285f90db7e1278658a8d84191f2f /src/if_ruby.c
parent06d626032330dc79825004f9cba7d154c9c90cbc (diff)
downloadvim-git-b09c684195d803137d52c34fb4d3a410be5ac10f.tar.gz
patch 8.1.0646: cannot build with Ruby 2.6.0v8.1.0646
Problem: Cannot build with Ruby 2.6.0. Solution: Add rb_ary_detransient(). (Ozaki Kiichi, closes #3724)
Diffstat (limited to 'src/if_ruby.c')
-rw-r--r--src/if_ruby.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/if_ruby.c b/src/if_ruby.c
index cb9b41603..34fc0ed1c 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -123,6 +123,10 @@
# define rb_gc_writebarrier_unprotect rb_gc_writebarrier_unprotect_stub
#endif
+#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 26
+# define rb_ary_detransient (*dll_rb_ary_detransient)
+#endif
+
#include <ruby.h>
#ifdef RUBY19_OR_LATER
# include <ruby/encoding.h>
@@ -455,6 +459,9 @@ static VALUE (*dll_rb_float_new) (double);
static VALUE (*dll_rb_ary_new) (void);
static VALUE (*dll_rb_ary_new4) (long n, const VALUE *elts);
static VALUE (*dll_rb_ary_push) (VALUE, VALUE);
+# if DYNAMIC_RUBY_VER >= 26
+static void (*dll_rb_ary_detransient) (VALUE);
+# endif
# if defined(RUBY19_OR_LATER) || defined(RUBY_INIT_STACK)
# ifdef __ia64
static void * (*dll_rb_ia64_bsp) (void);
@@ -666,6 +673,9 @@ static struct
{"rb_ary_new4", (RUBY_PROC*)&dll_rb_ary_new4},
# endif
{"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push},
+# if DYNAMIC_RUBY_VER >= 26
+ {"rb_ary_detransient", (RUBY_PROC*)&dll_rb_ary_detransient},
+# endif
# endif
# ifdef RUBY19_OR_LATER
{"rb_int2big", (RUBY_PROC*)&dll_rb_int2big},
@@ -966,12 +976,9 @@ static int ensure_ruby_initialized(void)
static void error_print(int state)
{
-#ifndef DYNAMIC_RUBY
-#if !(defined(RUBY_VERSION) && RUBY_VERSION >= 19) \
- && !(defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 19)
+#if !defined(DYNAMIC_RUBY) && !defined(RUBY19_OR_LATER)
RUBYEXTERN VALUE ruby_errinfo;
#endif
-#endif
VALUE error;
VALUE eclass;
VALUE einfo;