From 5bbba76489628f4509495ebf4ba0a7aad4c0b560 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Fri, 29 Jul 2022 16:02:10 +0900 Subject: respect current frame of `rb_eval_string` `self` is nearest Ruby method's `self`. If there is no ruby frame, use toplevel `self` (`main`). https://bugs.ruby-lang.org/issues/18780 --- ext/-test-/eval/eval.c | 13 +++++++++++++ ext/-test-/eval/extconf.rb | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 ext/-test-/eval/eval.c create mode 100644 ext/-test-/eval/extconf.rb (limited to 'ext/-test-') diff --git a/ext/-test-/eval/eval.c b/ext/-test-/eval/eval.c new file mode 100644 index 0000000000..983468fc34 --- /dev/null +++ b/ext/-test-/eval/eval.c @@ -0,0 +1,13 @@ +#include "ruby/ruby.h" + +static VALUE +eval_string(VALUE self, VALUE str) +{ + return rb_eval_string(StringValueCStr(str)); +} + +void +Init_eval(void) +{ + rb_define_global_function("rb_eval_string", eval_string, 1); +} diff --git a/ext/-test-/eval/extconf.rb b/ext/-test-/eval/extconf.rb new file mode 100644 index 0000000000..cdbf6a8597 --- /dev/null +++ b/ext/-test-/eval/extconf.rb @@ -0,0 +1,2 @@ +require 'mkmf' +create_makefile('-test-/eval') -- cgit v1.2.1