diff options
| author | ksss <[email protected]> | 2017-03-25 15:37:31 +0900 |
|---|---|---|
| committer | ksss <[email protected]> | 2017-03-25 15:56:27 +0900 |
| commit | b1c5c3b0a5f5409d61c24ae312abe4229cc7e276 (patch) | |
| tree | ddb2d23b955a7811f17f51b9a8fd569b6ae8fcdf | |
| parent | 051e40c0493f2de332f5439e3230c9fe6958bf1a (diff) | |
| download | mruby-b1c5c3b0a5f5409d61c24ae312abe4229cc7e276.tar.gz mruby-b1c5c3b0a5f5409d61c24ae312abe4229cc7e276.zip | |
Fix lost lineno
| -rw-r--r-- | mrbgems/mruby-kernel-ext/test/kernel.rb | 2 | ||||
| -rw-r--r-- | src/backtrace.c | 1 |
2 files changed, 3 insertions, 0 deletions
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 "); |
