From cd9f53d42eae3b57ebc5c75492dcf372a627f300 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 1 Dec 2017 17:50:51 +0900 Subject: Pop exception objects from the bottom of GC arena; fix #3863 --- src/error.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/error.c') diff --git a/src/error.c b/src/error.c index a9b6db07a..411a15081 100644 --- a/src/error.c +++ b/src/error.c @@ -229,6 +229,9 @@ mrb_exc_set(mrb_state *mrb, mrb_value exc) } else { mrb->exc = mrb_obj_ptr(exc); + if ((struct RBasic*)mrb->exc == mrb->gc.arena[mrb->gc.arena_idx-1]) { + mrb->gc.arena_idx--; + } if (!mrb->gc.out_of_memory) { exc_debug_info(mrb, mrb->exc); mrb_keep_backtrace(mrb, exc); -- cgit v1.2.3