From: Xinchen Hui Date: Wed, 5 Mar 2014 14:31:02 +0000 (+0800) Subject: Fixed zend_is_true to support IS_REFERENCE X-Git-Tag: POST_PHPNG_MERGE~412^2~410 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9a4e16db6f38010b32fe4bddad92e28e56423153;p=php Fixed zend_is_true to support IS_REFERENCE --- diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h index 7a8755469a..3db755fb84 100644 --- a/Zend/zend_execute.h +++ b/Zend/zend_execute.h @@ -115,6 +115,7 @@ static zend_always_inline int i_zend_is_true(zval *op TSRMLS_DC) { int result; +again: switch (Z_TYPE_P(op)) { case IS_NULL: result = 0; @@ -139,7 +140,7 @@ static zend_always_inline int i_zend_is_true(zval *op TSRMLS_DC) result = (zend_hash_num_elements(Z_ARRVAL_P(op))?1:0); break; case IS_OBJECT: - if(IS_ZEND_STD_OBJECT(*op)) { + if (IS_ZEND_STD_OBJECT(*op)) { if (Z_OBJ_HT_P(op)->cast_object) { zval tmp; if (Z_OBJ_HT_P(op)->cast_object(op, &tmp, IS_BOOL TSRMLS_CC) == SUCCESS) { @@ -159,6 +160,10 @@ static zend_always_inline int i_zend_is_true(zval *op TSRMLS_DC) } result = 1; break; + case IS_REFERENCE: + op = Z_REFVAL_P(op); + goto again; + break; default: result = 0; break;