mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
The clone method should copy object status (e.g. frozen) too; #4030
This commit is contained in:
@@ -348,6 +348,7 @@ mrb_obj_clone(mrb_state *mrb, mrb_value self)
|
||||
mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)p->c);
|
||||
clone = mrb_obj_value(p);
|
||||
init_copy(mrb, clone, self);
|
||||
p->flags = mrb_obj_ptr(self)->flags;
|
||||
|
||||
return clone;
|
||||
}
|
||||
|
||||
@@ -171,6 +171,10 @@ assert('Kernel#clone', '15.3.1.3.8') do
|
||||
assert_true a.respond_to?(:test)
|
||||
assert_false b.respond_to?(:test)
|
||||
assert_true c.respond_to?(:test)
|
||||
|
||||
a.freeze
|
||||
d = a.clone
|
||||
assert_true d.frozen?
|
||||
end
|
||||
|
||||
assert('Kernel#dup', '15.3.1.3.9') do
|
||||
|
||||
Reference in New Issue
Block a user