[#21225] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — "U.Nakamura" <usa@...>

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

14 messages 2003/08/22
[#21227] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — nobu.nakada@... 2003/08/22

なかだです。

[#21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — matz@... (Yukihiro Matsumoto) 2003/08/22

まつもと ゆきひろです

[#21281] 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

16 messages 2003/08/29
[#21285] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/08/29

まつもと ゆきひろです

[#21288] Re: 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...> 2003/08/29

永井@知能.九工大です.

[#21306] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/09/03

まつもと ゆきひろです

[ruby-dev:21231] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values.

From: matz@... (Yukihiro Matsumoto)
Date: 2003-08-23 01:47:04 UTC
List: ruby-dev #21231
まつもと ゆきひろです

In message "[ruby-dev:21229] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values."
    on 03/08/23, nobu.nakada@nifty.ne.jp <nobu.nakada@nifty.ne.jp> writes:

|"ab".scan(/(.)(.)/){|x|} で警告が出るようにする、ということでしょ
|うか。

そうですね。

|ただ、この変更は少々疑問なんですが。
|
|$ ruby -v -e '"ab".scan(/(.)/){|x,|p x}'
|ruby 1.8.0 (2003-08-21) [i686-linux]
|"a"
|"b"
|$ ./ruby -v -e '"ab".scan(/(.)/){|x,|p x}'
|ruby 1.8.0 (2003-08-22) [i686-linux]
|["a"]
|["b"]

ううむ、これでどうでしょう。

--- eval.c	22 Aug 2003 17:43:57 -0000	1.519
+++ eval.c	23 Aug 2003 01:45:49 -0000
@@ -4256,7 +4256,16 @@ rb_yield_splat(values)
 {
-    values = svalue_to_avalue(values);
-    if (RARRAY(values)->len == 0) {
-	return rb_yield_0(Qundef, 0, 0, Qfalse, Qfalse);
+    VALUE tmp;
+    int avalue = Qfalse;
+
+    tmp = rb_check_array_type(values);
+    if (!NIL_P(tmp)) {
+	if (RARRAY(tmp)->len == 0) {
+	    values = Qundef;
+	}
+	else {
+	    values = tmp;
+	    avalue = Qtrue;
+	}
     }
-    return rb_yield_0(values, 0, 0, Qfalse, Qtrue);
+    return rb_yield_0(values, 0, 0, Qfalse, avalue);
 }

In This Thread