summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/com/COM.c8
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) {