From: nobu@... Date: 2004-09-27T12:49:17+09:00 Subject: [ruby-dev:24353] Re: Array#replace problem なかだです。 At Sun, 26 Sep 2004 03:56:10 +0900, Tanaka Akira wrote in [ruby-dev:24345]: > > 次のように、Array#replace すると、引数として与えたものとは異なるものに > なることがあります。 > > % ./ruby -ve ' > orig = (1..10).to_a > orig.shift > copy = [] > p orig > copy.replace orig > p copy' こんなとこでしょうか。 Index: array.c =================================================================== RCS file: /cvs/ruby/src/ruby/array.c,v retrieving revision 1.159 diff -u -2 -p -r1.159 array.c --- array.c 24 Sep 2004 05:53:42 -0000 1.159 +++ array.c 27 Sep 2004 03:47:35 -0000 @@ -2277,6 +2277,6 @@ rb_ary_replace(copy, orig) if (RARRAY(copy)->ptr && !FL_TEST(copy, ELTS_SHARED)) free(RARRAY(copy)->ptr); - RARRAY(copy)->ptr = RARRAY(shared)->ptr; - RARRAY(copy)->len = RARRAY(shared)->len; + RARRAY(copy)->ptr = RARRAY(orig)->ptr; + RARRAY(copy)->len = RARRAY(orig)->len; RARRAY(copy)->aux.shared = shared; FL_SET(copy, ELTS_SHARED); -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦