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