From c789acbc3645cbdeb500c28af4ca295f1a61f2d1 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 4 Mar 2017 18:52:51 +0900 Subject: Save/restore arena index in the loop. --- src/backtrace.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/backtrace.c') diff --git a/src/backtrace.c b/src/backtrace.c index 529b0b1c9..deb3f8469 100644 --- a/src/backtrace.c +++ b/src/backtrace.c @@ -229,10 +229,11 @@ print_backtrace(mrb_state *mrb, mrb_value backtrace) static void print_backtrace_saved(mrb_state *mrb) { - int i; + int i, ai; FILE *stream = stderr; fprintf(stream, "trace:\n"); + ai = mrb_gc_arena_save(mrb); for (i = 0; i < mrb->backtrace.n; i++) { mrb_backtrace_entry *entry; @@ -252,6 +253,7 @@ print_backtrace_saved(mrb_state *mrb) else { fprintf(stream, ":in %s", method_name); } + mrb_gc_arena_restore(mrb, ai); } fprintf(stream, "\n"); -- cgit v1.2.3