diff options
-rw-r--r-- | ext/com/COM.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/ext/com/COM.c b/ext/com/COM.c index e846aee203..7c923f40dc 100644 --- a/ext/com/COM.c +++ b/ext/com/COM.c @@ -1870,7 +1870,6 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer switch (Z_TYPE_P(overloaded_property)) { case OE_IS_ARRAY: if (do_COM_offget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE) { - pval_destructor(&overloaded_property->element); FREE_VARIANT(var_result); FREE_COM(obj_prop); @@ -1880,7 +1879,6 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer case OE_IS_OBJECT: if (do_COM_propget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE) { - pval_destructor(&overloaded_property->element); FREE_VARIANT(var_result); FREE_COM(obj_prop); @@ -1889,7 +1887,6 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer break; case OE_IS_METHOD: - pval_destructor(&overloaded_property->element); FREE_VARIANT(var_result); if (obj != obj_prop) { @@ -1904,7 +1901,10 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer return return_value; } - pval_destructor(&overloaded_property->element); + if (obj == obj_prop) { + // not head + pval_destructor(&overloaded_property->element); + } if (V_VT(var_result) == VT_DISPATCH) { if (V_DISPATCH(var_result) == NULL) { |