[#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:21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values.

From: matz@... (Yukihiro Matsumoto)
Date: 2003-08-22 17:32:21 UTC
List: ruby-dev #21228
まつもと ゆきひろです

In message "[ruby-dev:21227] 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:

|で、これでもmake testが通らなかったりするわけですが、そもそも
|rb_yield_splat()の意図はどういうものでしょうか。
|
|[ruby-dev:21214]を読みかえして思ったんですが、ひょっとして 
|"a".scan(/(.)/) {|x|p x} も "a".scan(/./) {|x|p x} 同様、"a"に
|なるようにしようということでしょうか。

すいません。またやっちゃいました。基本的にはそういうことです。

正解はこれです。

Index: enum.c
===================================================================
RCS file: /src/ruby/enum.c,v
retrieving revision 1.38
diff -p -u -1 -r1.38 enum.c
--- enum.c	22 Aug 2003 08:09:57 -0000	1.38
+++ enum.c	22 Aug 2003 17:31:07 -0000
@@ -501,3 +501,3 @@ each_with_index_i(val, memo)
 {
-    rb_yield_values(val, INT2FIX(memo->u3.cnt));
+    rb_yield_values(2, val, INT2FIX(memo->u3.cnt));
     memo->u3.cnt++;
Index: eval.c
===================================================================
RCS file: /src/ruby/eval.c,v
retrieving revision 1.518
diff -p -u -1 -r1.518 eval.c
--- eval.c	22 Aug 2003 08:13:36 -0000	1.518
+++ eval.c	22 Aug 2003 17:31:08 -0000
@@ -4256,2 +4256,3 @@ rb_yield_splat(values)
 {
+    values = svalue_to_avalue(values);
     if (RARRAY(values)->len == 0) {

In This Thread