diff options
Diffstat (limited to 'imemo.c')
-rw-r--r-- | imemo.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -155,11 +155,13 @@ rb_imemo_class_fields_clone(VALUE fields_obj) if (rb_shape_too_complex_p(shape_id)) { clone = rb_imemo_class_fields_new_complex(CLASS_OF(fields_obj), 0); + RBASIC_SET_SHAPE_ID(clone, shape_id); st_table *src_table = rb_imemo_class_fields_complex_tbl(fields_obj); st_replace(rb_imemo_class_fields_complex_tbl(clone), src_table); } else { clone = imemo_class_fields_new(CLASS_OF(fields_obj), RSHAPE_CAPACITY(shape_id)); + RBASIC_SET_SHAPE_ID(clone, shape_id); MEMCPY(rb_imemo_class_fields_ptr(clone), rb_imemo_class_fields_ptr(fields_obj), VALUE, RSHAPE_LEN(shape_id)); } |