ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
- if (Z_IMMUTABLE_P(array_ptr)) {
+ if (Z_IMMUTABLE_P(array_ptr) ||
+ (Z_ISREF_P(array_ref) &&
+ Z_REFCOUNTED_P(array_ptr) &&
+ Z_REFCOUNT_P(array_ptr) > 1)) {
zval_copy_ctor(array_ptr);
}
Z_ADDREF_P(array_ref);
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
- if (Z_IMMUTABLE_P(array_ptr)) {
+ if (Z_IMMUTABLE_P(array_ptr) ||
+ (Z_ISREF_P(array_ref) &&
+ Z_REFCOUNTED_P(array_ptr) &&
+ Z_REFCOUNT_P(array_ptr) > 1)) {
zval_copy_ctor(array_ptr);
}
Z_ADDREF_P(array_ref);
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
- if (Z_IMMUTABLE_P(array_ptr)) {
+ if (Z_IMMUTABLE_P(array_ptr) ||
+ (Z_ISREF_P(array_ref) &&
+ Z_REFCOUNTED_P(array_ptr) &&
+ Z_REFCOUNT_P(array_ptr) > 1)) {
zval_copy_ctor(array_ptr);
}
Z_ADDREF_P(array_ref);
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
- if (Z_IMMUTABLE_P(array_ptr)) {
+ if (Z_IMMUTABLE_P(array_ptr) ||
+ (Z_ISREF_P(array_ref) &&
+ Z_REFCOUNTED_P(array_ptr) &&
+ Z_REFCOUNT_P(array_ptr) > 1)) {
zval_copy_ctor(array_ptr);
}
Z_ADDREF_P(array_ref);
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
- if (Z_IMMUTABLE_P(array_ptr)) {
+ if (Z_IMMUTABLE_P(array_ptr) ||
+ (Z_ISREF_P(array_ref) &&
+ Z_REFCOUNTED_P(array_ptr) &&
+ Z_REFCOUNT_P(array_ptr) > 1)) {
zval_copy_ctor(array_ptr);
}
Z_ADDREF_P(array_ref);