diff options
author | Harald Radi <phanto@php.net> | 2002-10-17 16:21:00 +0000 |
---|---|---|
committer | Harald Radi <phanto@php.net> | 2002-10-17 16:21:00 +0000 |
commit | 84c9395f1888abbca9267fd2d2bbf1358a97a538 (patch) | |
tree | b681c113350842c54813184078ea0585c15a3ffd | |
parent | 03cc839d9077eb1dabf44d24ca8dc9135081f767 (diff) | |
download | php-git-84c9395f1888abbca9267fd2d2bbf1358a97a538.tar.gz |
@ fixes bugs #19156 and #19544 (memleak)
-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) { |