changeset 15275:b408509d8292 v8.1.0646

patch 8.1.0646: cannot build with Ruby 2.6.0 commit https://github.com/vim/vim/commit/b09c684195d803137d52c34fb4d3a410be5ac10f Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 27 22:11:01 2018 +0100 patch 8.1.0646: cannot build with Ruby 2.6.0 Problem: Cannot build with Ruby 2.6.0. Solution: Add rb_ary_detransient(). (Ozaki Kiichi, closes https://github.com/vim/vim/issues/3724)
author Bram Moolenaar <Bram@vim.org>
date Thu, 27 Dec 2018 22:15:04 +0100
parents f47e56455015
children 2979ce4f3451
files src/if_ruby.c src/version.c
diffstat 2 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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;
--- a/src/version.c
+++ b/src/version.c
@@ -800,6 +800,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    646,
+/**/
     645,
 /**/
     644,