1
0
mirror of https://github.com/php/php-src.git synced 2026-04-09 00:53:30 +02:00

Fixed IS_REFERENCE separation

This commit is contained in:
Dmitry Stogov
2014-03-05 00:28:01 +04:00
parent 6b8c46dc76
commit db7b5325f0
2 changed files with 7 additions and 3 deletions

View File

@@ -696,7 +696,10 @@ END_EXTERN_C()
zval *_zv = (zv); \
if (Z_REFCOUNTED_P(_zv)) { \
if (Z_REFCOUNT_P(_zv) > 1) { \
if (Z_TYPE_P(_zv) == IS_OBJECT || \
if (Z_ISREF_P(_zv)) { \
Z_DELREF_P(_zv); \
ZVAL_DUP(_zv, Z_REFVAL_P(_zv)); \
} else if (Z_TYPE_P(_zv) == IS_OBJECT ||\
Z_TYPE_P(_zv) == IS_RESOURCE) { \
Z_ADDREF_P(_zv); \
} else { \

View File

@@ -638,9 +638,10 @@ found:
} else if (EXPECTED(property_info != NULL)) {
/* if we assign referenced variable, we should separate it */
if (IS_REFCOUNTED(Z_TYPE_P(value))) {
Z_ADDREF_P(value);
if (Z_ISREF_P(value)) {
SEPARATE_ZVAL(value);
ZVAL_DUP(value, Z_REFVAL_P(value));
} else {
Z_ADDREF_P(value);
}
}
if (EXPECTED((property_info->flags & ZEND_ACC_STATIC) == 0) &&