if (clone_orig) {
intern->array = other->array;
if (Z_OBJ_HT_P(orig) == &spl_handler_ArrayObject) {
- ZVAL_ADDREF(intern->array);
- SEPARATE_ZVAL(&intern->array);
+ MAKE_STD_ZVAL(intern->array);
+ array_init(intern->array);
+ zend_hash_copy(HASH_OF(intern->array), HASH_OF(other->array), (copy_ctor_func_t) zval_add_ref, &tmp, sizeof(zval*));
+ }
+ if (Z_OBJ_HT_P(orig) == &spl_handler_ArrayIterator) {
ZVAL_ADDREF(other->array);
- ZVAL_ADDREF(intern->array);
}
} else {
intern->array = orig;