mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
Fixed assignment reference to itself
This commit is contained in:
parent
cb411f024d
commit
e884d5d8e3
@ -957,7 +957,7 @@ static inline zval* zend_assign_const_to_variable(zval *variable_ptr, zval *valu
|
||||
static inline zval* zend_assign_to_variable(zval *variable_ptr, zval *value TSRMLS_DC)
|
||||
{
|
||||
zend_refcounted *garbage;
|
||||
int is_ref = 0;
|
||||
zval *is_ref = NULL;
|
||||
|
||||
if (EXPECTED(!Z_REFCOUNTED_P(variable_ptr))) {
|
||||
if (EXPECTED(!Z_ISREF_P(value))) {
|
||||
@ -967,8 +967,8 @@ static inline zval* zend_assign_to_variable(zval *variable_ptr, zval *value TSRM
|
||||
}
|
||||
return variable_ptr;
|
||||
} else if (Z_ISREF_P(variable_ptr)) {
|
||||
is_ref = variable_ptr;
|
||||
variable_ptr = Z_REFVAL_P(variable_ptr);
|
||||
is_ref = 1;
|
||||
}
|
||||
|
||||
if (EXPECTED(!Z_REFCOUNTED_P(variable_ptr))) {
|
||||
@ -985,6 +985,8 @@ static inline zval* zend_assign_to_variable(zval *variable_ptr, zval *value TSRM
|
||||
} else {
|
||||
ZVAL_DUP(variable_ptr, value);
|
||||
}
|
||||
} else if (is_ref == value) {
|
||||
return variable_ptr;
|
||||
} else {
|
||||
if (Z_REFCOUNT_P(value) == 1) {
|
||||
//??? auto dereferencing
|
||||
@ -1005,7 +1007,7 @@ assign_simple:
|
||||
} else {
|
||||
ZVAL_DUP(variable_ptr, value);
|
||||
}
|
||||
} else {
|
||||
} else if (is_ref != value) {
|
||||
assign_ref:
|
||||
if (Z_REFCOUNT_P(value) == 1) {
|
||||
//??? auto dereferencing
|
||||
|
Loading…
Reference in New Issue
Block a user