phanto Thu Oct 17 12:21:01 2002 EDT Modified files: /php4/ext/com COM.c Log: @ fixes bugs #19156 and #19544 (memleak) Index: php4/ext/com/COM.c diff -u php4/ext/com/COM.c:1.87 php4/ext/com/COM.c:1.88 --- php4/ext/com/COM.c:1.87 Wed Oct 2 08:53:51 2002 +++ php4/ext/com/COM.c Thu Oct 17 12:21:00 2002 @@ -18,7 +18,7 @@ | Wez Furlong <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: COM.c,v 1.87 2002/10/02 12:53:51 phanto Exp $ */ +/* $Id: COM.c,v 1.88 2002/10/17 16:21:00 phanto Exp $ */ /* * This module implements support for COM components that support the IDispatch * interface. Both local (COM) and remote (DCOM) components can be accessed. @@ -1870,7 +1870,6 @@ 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 @@ 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 @@ break; case OE_IS_METHOD: - pval_destructor(&overloaded_property->element); FREE_VARIANT(var_result); if (obj != obj_prop) { @@ -1904,7 +1901,10 @@ 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) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php