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

Reply via email to