summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/-ext-/debug/test_debug.rb16
-rw-r--r--version.h2
-rw-r--r--vm_backtrace.c3
-rw-r--r--vm_exec.h2
4 files changed, 21 insertions, 2 deletions
diff --git a/test/-ext-/debug/test_debug.rb b/test/-ext-/debug/test_debug.rb
index 3804714d0d..bc41c1bb79 100644
--- a/test/-ext-/debug/test_debug.rb
+++ b/test/-ext-/debug/test_debug.rb
@@ -56,4 +56,20 @@ class TestDebug < Test::Unit::TestCase
binds = inspector_in_eval
binds_check binds, bug7635
end
+
+ class MyRelation
+ include Enumerable
+
+ def each
+ yield :each_entry
+ end
+ end
+
+ def test_lazy_block
+ x = MyRelation.new.any? do
+ Bug::Debug.inspector
+ true
+ end
+ assert_equal true, x, '[Bug #15105]'
+ end
end
diff --git a/version.h b/version.h
index e88b6ab32e..cc5f50a49b 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.5.4"
#define RUBY_RELEASE_DATE "2018-11-28"
-#define RUBY_PATCHLEVEL 113
+#define RUBY_PATCHLEVEL 114
#define RUBY_RELEASE_YEAR 2018
#define RUBY_RELEASE_MONTH 11
diff --git a/vm_backtrace.c b/vm_backtrace.c
index d82d73d963..7d6c675398 100644
--- a/vm_backtrace.c
+++ b/vm_backtrace.c
@@ -1201,6 +1201,9 @@ rb_debug_inspector_open(rb_debug_inspector_func_t func, void *data)
enum ruby_tag_type state;
volatile VALUE MAYBE_UNUSED(result);
+ /* escape all env to heap */
+ rb_vm_stack_to_heap(ec);
+
dbg_context.ec = ec;
dbg_context.cfp = dbg_context.ec->cfp;
dbg_context.backtrace = ec_backtrace_location_ary(ec, 0, 0);
diff --git a/vm_exec.h b/vm_exec.h
index 29120975ce..2f4b403e9a 100644
--- a/vm_exec.h
+++ b/vm_exec.h
@@ -36,7 +36,7 @@ typedef rb_iseq_t *ISEQ;
#endif
#define DEBUG_END_INSN() \
- rb_vmdebug_debug_print_post(th, GET_CFP() SC_REGS());
+ rb_vmdebug_debug_print_post(ec, GET_CFP() SC_REGS());
#else