From 40bc4f5ae4ffe325c36a49e0d3280dbee2a39cee Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 29 Aug 2002 09:08:18 +0000 Subject: * array.c (rb_ary_become): should not free ptr if it's shared. * eval.c (rb_alias): prohibit making an alias named "allocate" if klass is a metaclass. * string.c (rb_string_value_ptr): StringValuePtr() should never return NULL pointer. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- array.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'array.c') diff --git a/array.c b/array.c index f88e1b1cc2..f247db9794 100644 --- a/array.c +++ b/array.c @@ -801,7 +801,8 @@ rb_ary_become(copy, orig) { orig = to_ary(orig); ary_make_shared(orig); - if (RARRAY(copy)->ptr) free(RARRAY(copy)->ptr); + if (RARRAY(copy)->ptr && !FL_TEST(copy, ELTS_SHARED)) + free(RARRAY(copy)->ptr); RARRAY(copy)->ptr = RARRAY(orig)->ptr; RARRAY(copy)->len = RARRAY(orig)->len; RARRAY(copy)->aux.shared = RARRAY(orig)->aux.shared; -- cgit v1.2.3