mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* variable.c (rb_copy_generic_ivar): remove old generic instance
variable table if it existes. * class.c (rb_make_metaclass): metaclass of a metaclass is a metaclass itself. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
20254d4e13
commit
6f484e4930
22 changed files with 276 additions and 238 deletions
16
struct.c
16
struct.c
|
@ -421,17 +421,19 @@ rb_struct_to_a(s)
|
|||
}
|
||||
|
||||
static VALUE
|
||||
rb_struct_become(clone, s)
|
||||
VALUE clone, s;
|
||||
rb_struct_become(copy, s)
|
||||
VALUE copy, s;
|
||||
{
|
||||
if (!rb_obj_is_instance_of(s, rb_obj_class(clone))) {
|
||||
if (copy == s) return copy;
|
||||
rb_check_frozen(copy);
|
||||
if (!rb_obj_is_instance_of(s, rb_obj_class(copy))) {
|
||||
rb_raise(rb_eTypeError, "wrong argument class");
|
||||
}
|
||||
RSTRUCT(clone)->ptr = ALLOC_N(VALUE, RSTRUCT(s)->len);
|
||||
RSTRUCT(clone)->len = RSTRUCT(s)->len;
|
||||
MEMCPY(RSTRUCT(clone)->ptr, RSTRUCT(s)->ptr, VALUE, RSTRUCT(clone)->len);
|
||||
RSTRUCT(copy)->ptr = ALLOC_N(VALUE, RSTRUCT(s)->len);
|
||||
RSTRUCT(copy)->len = RSTRUCT(s)->len;
|
||||
MEMCPY(RSTRUCT(copy)->ptr, RSTRUCT(s)->ptr, VALUE, RSTRUCT(copy)->len);
|
||||
|
||||
return clone;
|
||||
return copy;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue