[ruby-dev:24353] Re: Array#replace problem

From: nobu@...
Date: 2004-09-27 03:49:17 UTC
List: ruby-dev #24353
なかだです。

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はできる。
    中田 伸悦

In This Thread