diff options
author | Nikita Popov <nikic@php.net> | 2014-05-26 18:17:55 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2014-05-26 18:17:55 +0200 |
commit | 4ee14c6f8dd7324d9634d11a1f665cf6065e588a (patch) | |
tree | 974a5c23f23e15520156f3fb9e53c2310c31b246 | |
parent | ff72c7bfd7b018c6b82ed6c97e1a8ac6ba6eebba (diff) | |
download | php-git-4ee14c6f8dd7324d9634d11a1f665cf6065e588a.tar.gz |
Fix ** operator with references
-rw-r--r-- | Zend/tests/pow_ref.phpt | 17 | ||||
-rw-r--r-- | Zend/zend_operators.c | 6 |
2 files changed, 22 insertions, 1 deletions
diff --git a/Zend/tests/pow_ref.phpt b/Zend/tests/pow_ref.phpt new file mode 100644 index 0000000000..488e1d2d89 --- /dev/null +++ b/Zend/tests/pow_ref.phpt @@ -0,0 +1,17 @@ +--TEST-- +Use power operator on reference +--FILE-- +<?php + +$a = 2; +$b = 3; + +$ref =& $b; + +$a **= $b; + +var_dump($a); + +?> +--EXPECT-- +int(8) diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 163a493060..72ac9fca1f 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1137,7 +1137,11 @@ ZEND_API int pow_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ * return SUCCESS; default: - if (!converted) { + if (Z_ISREF_P(op1)) { + op1 = Z_REFVAL_P(op1); + } else if (Z_ISREF_P(op2)) { + op2 = Z_REFVAL_P(op2); + } else if (!converted) { ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_POW); if (Z_TYPE_P(op1) == IS_ARRAY) { |