diff options
Diffstat (limited to 'src/backtrace.c')
| -rw-r--r-- | src/backtrace.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backtrace.c b/src/backtrace.c index 508fe99e9..65404d23a 100644 --- a/src/backtrace.c +++ b/src/backtrace.c @@ -41,6 +41,7 @@ each_backtrace(mrb_state *mrb, ptrdiff_t ciidx, each_backtrace_func func, void * mrb_callinfo *ci; const mrb_irep *irep; const mrb_code *pc; + uint32_t idx; ci = &mrb->c->cibase[i]; @@ -57,10 +58,11 @@ each_backtrace(mrb_state *mrb, ptrdiff_t ciidx, each_backtrace_func func, void * continue; } - loc.lineno = mrb_debug_get_line(mrb, irep, pc - irep->iseq); + idx = (uint32_t)(pc - irep->iseq); + loc.lineno = mrb_debug_get_line(mrb, irep, idx); if (loc.lineno == -1) continue; - loc.filename = mrb_debug_get_filename(mrb, irep, pc - irep->iseq); + loc.filename = mrb_debug_get_filename(mrb, irep, idx); if (!loc.filename) { loc.filename = "(unknown)"; } |
