diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2014-02-19 01:12:05 +0400 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2014-02-19 01:12:05 +0400 |
| commit | 557994d50d6d712a2a23ba0bbb3169750bf0a0cf (patch) | |
| tree | c13d2d259bd06a45d8e79d0f1b839304899e5c4a /Zend/zend_operators.c | |
| parent | 110e01a21eef8827a0c449f23139e25a9e32e181 (diff) | |
| download | php-git-557994d50d6d712a2a23ba0bbb3169750bf0a0cf.tar.gz | |
Use better data structures (incomplete)
Diffstat (limited to 'Zend/zend_operators.c')
| -rw-r--r-- | Zend/zend_operators.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 4c44c0ee84..1dff55c8f0 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -855,7 +855,11 @@ ZEND_API int add_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ * return SUCCESS; default: - if (!converted) { + if (Z_TYPE_P(op1) == IS_REFERENCE) { + op1 = Z_REFVAL_P(op1); + } else if (Z_TYPE_P(op2) == IS_REFERENCE) { + op2 = Z_REFVAL_P(op2); + } else if (!converted) { ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_ADD); zendi_convert_scalar_to_number(op1, op1_copy, result); @@ -904,7 +908,11 @@ ZEND_API int sub_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ * return SUCCESS; default: - if (!converted) { + if (Z_TYPE_P(op1) == IS_REFERENCE) { + op1 = Z_REFVAL_P(op1); + } else if (Z_TYPE_P(op2) == IS_REFERENCE) { + op2 = Z_REFVAL_P(op2); + } else if (!converted) { ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_SUB); zendi_convert_scalar_to_number(op1, op1_copy, result); @@ -947,7 +955,11 @@ ZEND_API int mul_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ * return SUCCESS; default: - if (!converted) { + if (Z_TYPE_P(op1) == IS_REFERENCE) { + op1 = Z_REFVAL_P(op1); + } else if (Z_TYPE_P(op2) == IS_REFERENCE) { + op2 = Z_REFVAL_P(op2); + } else if (!converted) { ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_MUL); zendi_convert_scalar_to_number(op1, op1_copy, result); @@ -1014,7 +1026,11 @@ ZEND_API int div_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ * return SUCCESS; default: - if (!converted) { + if (Z_TYPE_P(op1) == IS_REFERENCE) { + op1 = Z_REFVAL_P(op1); + } else if (Z_TYPE_P(op2) == IS_REFERENCE) { + op2 = Z_REFVAL_P(op2); + } else if (!converted) { ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_DIV); zendi_convert_scalar_to_number(op1, op1_copy, result); |
