summaryrefslogtreecommitdiff
path: root/src/if_ruby.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2010-05-22 21:56:55 +0200
committerBram Moolenaar <Bram@vim.org>2010-05-22 21:56:55 +0200
commit1d2beae1761a94a115f4dba340ef20e462802a9a (patch)
treec3353879fc428aefa8d8e862088e585160417a4e /src/if_ruby.c
parentbe18d10fd44690505c82b53d546ca36597a731aa (diff)
downloadvim-git-1d2beae1761a94a115f4dba340ef20e462802a9a.tar.gz
Some versions of Ruby redefine rb_str_new2 to rb_str_new_cstr.
Attempt at a fix.
Diffstat (limited to 'src/if_ruby.c')
-rw-r--r--src/if_ruby.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/if_ruby.c b/src/if_ruby.c
index 8003d4c88..4fd54e285 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -170,8 +170,11 @@ static void ruby_vim_init(void);
#define rb_str_cat dll_rb_str_cat
#define rb_str_concat dll_rb_str_concat
#define rb_str_new dll_rb_str_new
-/* Ruby may also define rb_str_new2. */
-#ifndef rb_str_new2
+#ifdef rb_str_new2
+/* Ruby may #define rb_str_new2 to use rb_str_new_cstr. */
+# define need_rb_str_new_cstr 1
+# define rb_str_new_cstr dll_rb_str_new_cstr
+#else
# define rb_str_new2 dll_rb_str_new2
#endif
#if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18
@@ -247,7 +250,12 @@ static char *(*dll_rb_str2cstr) (VALUE,int*);
static VALUE (*dll_rb_str_cat) (VALUE, const char*, long);
static VALUE (*dll_rb_str_concat) (VALUE, VALUE);
static VALUE (*dll_rb_str_new) (const char*, long);
+#ifdef need_rb_str_new_cstr
+/* Ruby may #define rb_str_new2 to use rb_str_new_cstr. */
+static VALUE (*dll_rb_str_new_cstr) (const char*);
+#else
static VALUE (*dll_rb_str_new2) (const char*);
+#endif
#ifdef RUBY19_OR_LATER
static VALUE (*dll_rb_errinfo) (void);
#else
@@ -343,7 +351,11 @@ static struct
{"rb_str_cat", (RUBY_PROC*)&dll_rb_str_cat},
{"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat},
{"rb_str_new", (RUBY_PROC*)&dll_rb_str_new},
+#ifdef need_rb_str_new_cstr
+ {"rb_str_new_cstr", (RUBY_PROC*)&dll_rb_str_new_cstr},
+#else
{"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2},
+#endif
#ifdef RUBY19_OR_LATER
{"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo},
#else