diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2014-08-14 15:07:39 +0400 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2014-08-14 15:07:39 +0400 |
| commit | e430948581ed849c74bc87504a99a2c8a97b8c1d (patch) | |
| tree | 42254d08abb8fe1e1a7fea54228894b552ce0d9c /Zend/zend_operators.c | |
| parent | 2ece977c80da2fd1395fcf3f00314111ac587254 (diff) | |
| download | php-git-e430948581ed849c74bc87504a99a2c8a97b8c1d.tar.gz | |
Fixed reference handling
Diffstat (limited to 'Zend/zend_operators.c')
| -rw-r--r-- | Zend/zend_operators.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 403eb7c290..09c567dfa2 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1783,6 +1783,14 @@ ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* { return SUCCESS; default: + if (Z_ISREF_P(op1)) { + op1 = Z_REFVAL_P(op1); + continue; + } else if (Z_ISREF_P(op2)) { + op2 = Z_REFVAL_P(op2); + continue; + } + if (Z_TYPE_P(op1) == IS_OBJECT && Z_OBJ_HANDLER_P(op1, compare)) { return Z_OBJ_HANDLER_P(op1, compare)(result, op1, op2 TSRMLS_CC); } else if (Z_TYPE_P(op2) == IS_OBJECT && Z_OBJ_HANDLER_P(op2, compare)) { @@ -1841,11 +1849,7 @@ ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* { return SUCCESS; } } - if (Z_ISREF_P(op1)) { - op1 = Z_REFVAL_P(op1); - } else if (Z_ISREF_P(op2)) { - op2 = Z_REFVAL_P(op2); - } else if (!converted) { + if (!converted) { if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) { zendi_convert_to_boolean(op2, op2_copy, result); ZVAL_LONG(result, (Z_TYPE_P(op2) == IS_TRUE) ? -1 : 0); |
