summaryrefslogtreecommitdiff
path: root/vm_backtrace.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm_backtrace.c')
-rw-r--r--vm_backtrace.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/vm_backtrace.c b/vm_backtrace.c
index fa9295daab..0418b6c4d0 100644
--- a/vm_backtrace.c
+++ b/vm_backtrace.c
@@ -40,7 +40,14 @@ int
rb_vm_get_sourceline(const rb_control_frame_t *cfp)
{
if (VM_FRAME_RUBYFRAME_P(cfp) && cfp->iseq) {
- return calc_lineno(cfp->iseq, cfp->pc);
+ const rb_iseq_t *iseq = cfp->iseq;
+ int line = calc_lineno(iseq, cfp->pc);
+ if (line != 0) {
+ return line;
+ }
+ else {
+ return FIX2INT(rb_iseq_first_lineno(iseq));
+ }
}
else {
return 0;