From c894346639e0634f272276c16c67a191e190a857 Mon Sep 17 00:00:00 2001 From: jj Date: Fri, 19 Sep 2014 21:38:22 +0200 Subject: [PATCH] ruby: call RUBY_INIT_STACK --- plugins/ruby/ruby.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/ruby/ruby.cpp b/plugins/ruby/ruby.cpp index 17db1eb21..ea4becd6a 100644 --- a/plugins/ruby/ruby.cpp +++ b/plugins/ruby/ruby.cpp @@ -293,6 +293,7 @@ typedef unsigned long ID; #define FIX2INT(i) (((long)i) >> 1) #define RUBY_METHOD_FUNC(func) ((VALUE(*)(...))func) +void (*ruby_init_stack)(VALUE*); void (*ruby_sysinit)(int *, const char ***); void (*ruby_init)(void); void (*ruby_init_loadpath)(void); @@ -337,6 +338,7 @@ static int df_loadruby(void) // ruby_sysinit is optional (ruby1.9 only) ruby_sysinit = (decltype(ruby_sysinit))LookupPlugin(libruby_handle, "ruby_sysinit"); #define rbloadsym(s) if (!(s = (decltype(s))LookupPlugin(libruby_handle, #s))) return 0 + rbloadsym(ruby_init_stack); rbloadsym(ruby_init); rbloadsym(ruby_init_loadpath); rbloadsym(ruby_script); @@ -401,6 +403,10 @@ static void df_rubythread(void *p) { int state, running; + // may need to be run from df main thread? + VALUE foo; + ruby_init_stack(&foo); + if (ruby_sysinit) { // ruby1.9 specific API static int argc;