From b1c5c3b0a5f5409d61c24ae312abe4229cc7e276 Mon Sep 17 00:00:00 2001 From: ksss Date: Sat, 25 Mar 2017 15:37:31 +0900 Subject: Fix lost lineno --- mrbgems/mruby-kernel-ext/test/kernel.rb | 2 ++ src/backtrace.c | 1 + 2 files changed, 3 insertions(+) diff --git a/mrbgems/mruby-kernel-ext/test/kernel.rb b/mrbgems/mruby-kernel-ext/test/kernel.rb index dd7cea86a..9828538f0 100644 --- a/mrbgems/mruby-kernel-ext/test/kernel.rb +++ b/mrbgems/mruby-kernel-ext/test/kernel.rb @@ -6,6 +6,7 @@ end assert('Kernel.caller, Kernel#caller') do skip "backtrace isn't available" if caller(0).empty? + caller_lineno = __LINE__ + 3 c = Class.new do def foo(*args) caller(*args) @@ -19,6 +20,7 @@ assert('Kernel.caller, Kernel#caller') do bar(*args) end end + assert_equal "kernel.rb:#{caller_lineno}:in Object#foo", c.new.baz(0)[0][-26..-1] assert_equal "#bar", c.new.baz[0][-4..-1] assert_equal "#foo", c.new.baz(0)[0][-4..-1] assert_equal "#bar", c.new.baz(1)[0][-4..-1] diff --git a/src/backtrace.c b/src/backtrace.c index 9d6f9b1a7..1d6621e2d 100644 --- a/src/backtrace.c +++ b/src/backtrace.c @@ -81,6 +81,7 @@ get_backtrace_i(mrb_state *mrb, struct backtrace_location *loc, void *data) str = mrb_str_new_cstr(mrb, loc->filename); snprintf(buf, sizeof(buf), ":%d", loc->lineno); + mrb_str_cat_cstr(mrb, str, buf); if (loc->method) { mrb_str_cat_lit(mrb, str, ":in "); -- cgit v1.2.3