[前][次][番号順一覧][スレッド一覧]

ruby-changes:15953

From: mame <ko1@a...>
Date: Wed, 19 May 2010 20:18:27 +0900 (JST)
Subject: [ruby-changes:15953] Ruby:r27895 (trunk): * vm_eval.c (rb_f_caller): return [] instead of nil when the function

mame	2010-05-19 20:18:12 +0900 (Wed, 19 May 2010)

  New Revision: 27895

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27895

  Log:
    * vm_eval.c (rb_f_caller): return [] instead of nil when the function
      is called on toplevel.  [ruby-dev:41348]

  Modified files:
    trunk/ChangeLog
    trunk/test/ruby/test_method.rb
    trunk/vm_eval.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 27894)
+++ ChangeLog	(revision 27895)
@@ -1,3 +1,8 @@
+Wed May 19 20:09:38 2010  Yusuke Endoh  <mame@t...>
+
+	* vm_eval.c (rb_f_caller): return [] instead of nil when the function
+	  is called on toplevel.  [ruby-dev:41348]
+
 Wed May 19 19:58:01 2010  NAKAMURA Usaku  <usa@r...>
 
 	* ext/socket/extconf.rb: mswin/mingw ruby has socketpair(), but it's
Index: vm_eval.c
===================================================================
--- vm_eval.c	(revision 27894)
+++ vm_eval.c	(revision 27895)
@@ -1562,7 +1562,7 @@
 static VALUE
 rb_f_caller(int argc, VALUE *argv)
 {
-    VALUE level;
+    VALUE level, ary;
     int lev;
 
     rb_scan_args(argc, argv, "01", &level);
@@ -1574,7 +1574,9 @@
     if (lev < 0)
 	rb_raise(rb_eArgError, "negative level (%d)", lev);
 
-    return vm_backtrace(GET_THREAD(), lev);
+    ary = vm_backtrace(GET_THREAD(), lev);
+    if (NIL_P(ary)) ary = rb_ary_new();
+    return ary;
 }
 
 static int
Index: test/ruby/test_method.rb
===================================================================
--- test/ruby/test_method.rb	(revision 27894)
+++ test/ruby/test_method.rb	(revision 27895)
@@ -228,6 +228,10 @@
     assert_in_out_err([], "p __callee__", %w(nil), [])
   end
 
+  def test_caller_top_level
+    assert_in_out_err([], "p caller", %w([]), [])
+  end
+
   def test_caller_negative_level
     assert_raise(ArgumentError) { caller(-1) }
   end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]