From 329a576f39ba8bf759d44007f185986669b3901a Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 25 Feb 2014 23:39:25 +0400 Subject: [PATCH] Fixed EG(error_zval) handling --- Zend/zend_execute.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 322fe46799..9bdee5c2c1 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1383,7 +1383,7 @@ static void zend_fetch_property_address(zval *result, zval *container, zval *pro { if (Z_TYPE_P(container) != IS_OBJECT) { if (container == &EG(error_zval)) { - result = &EG(error_zval); + ZVAL_INDIRECT(result, &EG(error_zval)); return; } @@ -1398,7 +1398,7 @@ static void zend_fetch_property_address(zval *result, zval *container, zval *pro object_init(container); } else { zend_error(E_WARNING, "Attempt to modify property of non-object"); - result = &EG(error_zval); + ZVAL_INDIRECT(result, &EG(error_zval)); return; } } @@ -1408,7 +1408,8 @@ static void zend_fetch_property_address(zval *result, zval *container, zval *pro if (NULL == ptr) { if (Z_OBJ_HT_P(container)->read_property && (ptr = Z_OBJ_HT_P(container)->read_property(container, prop_ptr, type, key TSRMLS_CC)) != NULL) { - ZVAL_COPY(result, ptr); +//??? ZVAL_COPY(result, ptr); + ZVAL_INDIRECT(result, ptr); } else { zend_error_noreturn(E_ERROR, "Cannot access undefined property for object with overloaded property access"); } @@ -1418,10 +1419,11 @@ static void zend_fetch_property_address(zval *result, zval *container, zval *pro } } else if (Z_OBJ_HT_P(container)->read_property) { zval *ptr = Z_OBJ_HT_P(container)->read_property(container, prop_ptr, type, key TSRMLS_CC); - ZVAL_COPY(result, ptr); +//??? ZVAL_COPY(result, ptr); + ZVAL_INDIRECT(result, ptr); } else { zend_error(E_WARNING, "This object doesn't support property references"); - result = &EG(error_zval); + ZVAL_INDIRECT(result, &EG(error_zval)); } } -- 2.50.1