diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | test/ruby/test_backtrace.rb | 4 | ||||
-rw-r--r-- | vm_backtrace.c | 2 |
3 files changed, 14 insertions, 0 deletions
@@ -1,3 +1,11 @@ +Tue Sep 10 14:37:01 2013 Shota Fukumori <sorah@tubusu.net> + + * vm_backtrace.c (vm_backtrace_to_ary): Ignore the second argument if + it is nil. [Bug #8884] [ruby-core:57094] + + * test/ruby/test_backtrace.rb (test_caller_with_nil_length): + Test for above. + Tue Sep 10 12:39:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> * class.c (method_entry_i): should exclude refined methods from diff --git a/test/ruby/test_backtrace.rb b/test/ruby/test_backtrace.rb index 6ab9032855..91dec4a943 100644 --- a/test/ruby/test_backtrace.rb +++ b/test/ruby/test_backtrace.rb @@ -85,6 +85,10 @@ class TestBacktrace < Test::Unit::TestCase rec[m] end + def test_caller_with_nil_length + assert_equal caller(0), caller(0, nil) + end + def test_caller_locations cs = caller(0); locs = caller_locations(0).map{|loc| loc.to_s diff --git a/vm_backtrace.c b/vm_backtrace.c index 3287c1f950..3945993e42 100644 --- a/vm_backtrace.c +++ b/vm_backtrace.c @@ -787,6 +787,8 @@ vm_backtrace_to_ary(rb_thread_t *th, int argc, VALUE *argv, int lev_default, int rb_scan_args(argc, argv, "02", &level, &vn); + if (argc == 2 && NIL_P(vn)) argc--; + switch (argc) { case 0: lev = lev_default + lev_plus; |