summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/vm.c b/vm.c
index 6cfea72e33..96a04bfcba 100644
--- a/vm.c
+++ b/vm.c
@@ -731,8 +731,14 @@ vm_backtrace_each(rb_thread_t *th, int lev, rb_backtrace_iter_func *iter, void *
}
}
else if (RUBYVM_CFUNC_FRAME_P(cfp)) {
+ ID id;
+
if (NIL_P(file)) file = rb_str_new_cstr("ruby");
- if ((*iter)(arg, file, line_no, rb_id2str(cfp->me->def->original_id))) break;
+ if (cfp->me->def)
+ id = cfp->me->def->original_id;
+ else
+ id = cfp->me->called_id;
+ if ((*iter)(arg, file, line_no, rb_id2str(id))) break;
}
cfp = RUBY_VM_NEXT_CONTROL_FRAME(cfp);
}