summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Radi <phanto@php.net>2002-10-17 16:21:00 +0000
committerHarald Radi <phanto@php.net>2002-10-17 16:21:00 +0000
commit84c9395f1888abbca9267fd2d2bbf1358a97a538 (patch)
treeb681c113350842c54813184078ea0585c15a3ffd
parent03cc839d9077eb1dabf44d24ca8dc9135081f767 (diff)
downloadphp-git-84c9395f1888abbca9267fd2d2bbf1358a97a538.tar.gz
@ fixes bugs #19156 and #19544 (memleak)
-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) {