From 85808e50b039f8091020f36c8e6e5fcc36bb4115 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 19 Apr 2021 15:33:54 +0900 Subject: backtrace.c: should skip first (innermost) frame w/out position; #5394 Otherwise we suffer `(unknown):0:` errors. --- src/backtrace.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/backtrace.c') diff --git a/src/backtrace.c b/src/backtrace.c index 61d606869..d7a8a0cdb 100644 --- a/src/backtrace.c +++ b/src/backtrace.c @@ -33,6 +33,7 @@ static void each_backtrace(mrb_state *mrb, ptrdiff_t ciidx, each_backtrace_func func, void *data) { ptrdiff_t i; + int n = 0; if (ciidx >= mrb->c->ciend - mrb->c->cibase) ciidx = 10; /* ciidx is broken... */ @@ -61,6 +62,7 @@ each_backtrace(mrb_state *mrb, ptrdiff_t ciidx, each_backtrace_func func, void * idx = (uint32_t)(pc - irep->iseq); loc.lineno = mrb_debug_get_line(mrb, irep, idx); + if (n++ == 0 && loc.lineno == -1) continue; loc.filename = mrb_debug_get_filename(mrb, irep, idx); if (!loc.filename) { -- cgit v1.2.3