cvs: /php4 NEWS /php4/ext/com COM.c

From: Date: Mon, 10 Apr 2000 21:54:44 +0000
Subject: cvs: /php4 NEWS /php4/ext/com COM.c
Groups: php.version4 
Request: Send a blank email to php-version4+get-13372@lists.php.net to get a copy of this message
zeev Mon Apr 10 14:54:44 2000 EDT Modified files: /php4 NEWS /php4/ext/com COM.c Log: - Added support for reading properties that require arguments in the COM module - writing to them will only be supported in PHP 4.1 (Zeev) Index: php4/NEWS diff -u php4/NEWS:1.193 php4/NEWS:1.194 --- php4/NEWS:1.193 Mon Apr 10 14:25:08 2000 +++ php4/NEWS Mon Apr 10 14:54:14 2000 @@ -2,7 +2,9 @@ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2000, Version 4.0.0 Release -- Fixed a memory leak in the COM module (Zeev) +- Added support for reading properties that require arguments in the COM + module - writing to them will only be supported in PHP 4.1 (Zeev) +- Fixed a very old legacy memory leak in the COM module (Zeev) - Fixed problems with object-overloading support - noteably, COM and Java (Zeev, Zend Engine) - Fixed an overrun in WDDX. (Thies) Index: php4/ext/com/COM.c diff -u php4/ext/com/COM.c:1.28 php4/ext/com/COM.c:1.29 --- php4/ext/com/COM.c:1.28 Mon Apr 10 14:32:18 2000 +++ php4/ext/com/COM.c Mon Apr 10 14:54:14 2000 @@ -220,7 +220,7 @@ PHP_MINIT_FUNCTION(COM) { CoInitialize(NULL); - le_idispatch = register_list_destructors(php_idispatch_destructor,NULL); + le_idispatch = register_list_destructors(php_idispatch_destructor, NULL); php_register_COM_class(); REGISTER_INI_ENTRIES(); return SUCCESS; @@ -507,7 +507,7 @@ dispparams.cNamedArgs = 0; hr = i_dispatch->lpVtbl->Invoke(i_dispatch, dispid, &IID_NULL, - LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, + LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD|DISPATCH_PROPERTYGET, &dispparams, var_result, NULL, 0); if (FAILED(hr)) { @@ -773,7 +773,8 @@ zend_hash_index_find(object->value.obj.properties, 0, (void **) &idispatch_handle); i_dispatch = zend_list_find((*idispatch_handle)->value.lval,&type); if (!i_dispatch || (type!=le_idispatch)) { - /* bail out */ + var_result.vt = VT_EMPTY; + return var_result; } var_result.vt = VT_DISPATCH; @@ -784,16 +785,19 @@ switch (overloaded_property->type) { case OE_IS_ARRAY: if (do_COM_offget(&var_result, &var_result, &overloaded_property->element, element!=property_reference->elements_list->head)==FAILURE) { - /* bail out */ + var_result.vt = VT_EMPTY; + return var_result; } /*printf("Array offset: ");*/ break; case OE_IS_OBJECT: if (var_result.vt != VT_DISPATCH) { - /* bail out */ + var_result.vt = VT_EMPTY; + return var_result; } else { if (do_COM_propget(&var_result, var_result.pdispVal, &overloaded_property->element, element!=property_reference->elements_list->head)==FAILURE) { - /* bail out */ + var_result.vt = VT_EMPTY; + return var_result; } /*printf("Object property: ");*/ } @@ -844,7 +848,7 @@ zend_hash_index_find(object->value.obj.properties, 0, (void **) &idispatch_handle); i_dispatch = zend_list_find((*idispatch_handle)->value.lval,&type); if (!i_dispatch || (type!=le_idispatch)) { - /* bail out */ + return FAILURE; } var_result.vt = VT_DISPATCH; var_result.pdispVal = i_dispatch; @@ -857,7 +861,7 @@ break; case OE_IS_OBJECT: if (var_result.vt != VT_DISPATCH) { - /* bail out */ + return FAILURE; } else { do_COM_propget(&var_result, i_dispatch, &overloaded_property->element, element!=property_reference->elements_list->head); /*printf("Object property: ");*/

« previous php.version4 (#13372) next »