wez             Wed Dec 22 20:10:48 2004 EDT

  Modified files:              (Branch: PHP_4_3)
    /php-src/ext/com    COM.c 
  Log:
  Black magic bad.
  This will probably fixed reported COM problems (multiple bug #s)
  
  
http://cvs.php.net/diff.php/php-src/ext/com/COM.c?r1=1.90.2.10&r2=1.90.2.11&ty=u
Index: php-src/ext/com/COM.c
diff -u php-src/ext/com/COM.c:1.90.2.10 php-src/ext/com/COM.c:1.90.2.11
--- php-src/ext/com/COM.c:1.90.2.10     Tue Apr 27 13:34:05 2004
+++ php-src/ext/com/COM.c       Wed Dec 22 20:10:48 2004
@@ -18,7 +18,7 @@
    |         Wez Furlong  <[EMAIL PROTECTED]>                          |
    +----------------------------------------------------------------------+
  */
-/* $Id: COM.c,v 1.90.2.10 2004/04/27 17:34:05 iliaa Exp $ */
+/* $Id: COM.c,v 1.90.2.11 2004/12/23 01:10:48 wez Exp $ */
 /*
  * This module implements support for COM components that support the IDispatch
  * interface.  Both local (COM) and remote (DCOM) components can be accessed.
@@ -1972,15 +1972,17 @@
        int type;
 
        if (zend_llist_count(property_reference->elements_list)==1
-               && !strcmp(Z_STRVAL(function_name->element), "com")) {
+                       && !strcmp(Z_STRVAL(function_name->element), "com")) {
+               zval *tmp;
+               
                /* constructor */
                PHP_FN(com_load)(INTERNAL_FUNCTION_PARAM_PASSTHRU);
-               /* free instance created by 'new' */
-               zval_dtor(object);
 
-               /* and override it with the instance created by 'com_load()' */
-               *object = *return_value;
-               INIT_ZVAL(*return_value);
+               zend_hash_index_find(Z_OBJPROP_P(return_value), 0, 
(void**)&handle);
+               zend_list_addref(Z_RESVAL_PP(handle));
+               MAKE_STD_ZVAL(tmp);
+               ZVAL_RESOURCE(tmp, Z_RESVAL_PP(handle));
+               zend_hash_index_update(Z_OBJPROP_P(object), 0, &tmp, 
sizeof(tmp), NULL);
 
                zval_dtor(&function_name->element);
                return;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to