summaryrefslogtreecommitdiffhomepage
path: root/src/backtrace.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-03-04 18:52:51 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-03-04 18:52:51 +0900
commitc789acbc3645cbdeb500c28af4ca295f1a61f2d1 (patch)
tree38f8879d56635dbbde3836f8defd8ea9ab1a5ed6 /src/backtrace.c
parentffdf7be7235717fb1cd30e54c24c5383f705f110 (diff)
downloadmruby-c789acbc3645cbdeb500c28af4ca295f1a61f2d1.tar.gz
mruby-c789acbc3645cbdeb500c28af4ca295f1a61f2d1.zip
Save/restore arena index in the loop.
Diffstat (limited to 'src/backtrace.c')
-rw-r--r--src/backtrace.c4
1 files changed, 3 insertions, 1 deletions
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");