[#41278] [BUG:1.9] BINARY should not be ASCII-compatible — Yugui <yugui@...>

WXVndWkbJEIkRyQ5ISMbKEIKCgo+IBskQiRHISIkKiQqJGAkTSQzJDMkXiRHJE41RE9AJEclKyVQ

15 messages 2010/05/11

[#41407] [Bug #3339] win32ole test failure — Usaku NAKAMURA <redmine@...>

Bug #3339: win32ole test failure

20 messages 2010/05/25
[#41411] Re: [Bug #3339] win32ole test failure — Masaki Suketa <masaki.suketa@...> 2010/05/25

助田です。

[#41412] Re: [Bug #3339] win32ole test failure — "U.Nakamura" <usa@...> 2010/05/25

こんにちは、なかむら(う)です。

[ruby-dev:41351] Re: [Bug #3316] Kernel#caller returns nil as well

From: Yusuke ENDOH <mame@...>
Date: 2010-05-19 11:05:45 UTC
List: ruby-dev #41351
遠藤です。

2010年5月19日12:49 Nobuhiro IMAI <redmine@ruby-lang.org>:
> [ruby-dev:41330] の件ですが、トップレベル云々は置いといて、
> nil が返ることもあるというのを RDoc に書いてみました。

反応が遅くてすみません。

見たところ r21932 で入った変更のようですが、ChangeLog によると
最適化かリファクタリングを意図したもののようで、挙動変更自体は
意図していなかったものと思います。
トップレベルでは空配列を返すように修正しておきます。


diff --git a/vm_eval.c b/vm_eval.c
index 2bf640d..d1e6352 100644
--- a/vm_eval.c
+++ b/vm_eval.c
@@ -1562,7 +1562,7 @@ rb_catch_obj(VALUE tag, VALUE (*func)(), VALUE data)
 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 @@ rb_f_caller(int argc, VALUE *argv)
     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

-- 
Yusuke Endoh <mame@tsg.ne.jp>

In This Thread