wez Fri Nov 28 12:11:16 2003 EDT Modified files: /php-src/ext/com_dotnet com_com.c Log: Fix #25664 - COM crashes when calling a Delphi implementations of ITypeInfo. Problem was that our extension assumes that the first param to ITypeInfo::Invoke was a reference to the COM object; this is not necessarily true and caused a crash in this instance. Problem solved by removing the ITypeInfo::Invoke call, as it doesn't buy us anything anyway. Index: php-src/ext/com_dotnet/com_com.c diff -u php-src/ext/com_dotnet/com_com.c:1.4 php-src/ext/com_dotnet/com_com.c:1.5 --- php-src/ext/com_dotnet/com_com.c:1.4 Tue Oct 7 14:50:07 2003 +++ php-src/ext/com_dotnet/com_com.c Fri Nov 28 12:11:16 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_com.c,v 1.4 2003/10/07 18:50:07 wez Exp $ */ +/* $Id: com_com.c,v 1.5 2003/11/28 17:11:16 wez Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -290,21 +290,8 @@ unsigned int arg_err; EXCEPINFO e; - if (obj->typeinfo) { - hr = ITypeInfo_Invoke(obj->typeinfo, V_DISPATCH(&obj->v), id_member, flags, disp_params, v, &e, &arg_err); - if (FAILED(hr) && (hr != DISP_E_EXCEPTION)) { - hr = IDispatch_Invoke(V_DISPATCH(&obj->v), id_member, - &IID_NULL, LOCALE_SYSTEM_DEFAULT, flags, disp_params, v, &e, &arg_err); - if (SUCCEEDED(hr)) { - /* fall back on using IDispatch directly */ - ITypeInfo_Release(obj->typeinfo); - obj->typeinfo = NULL; - } - } - } else { - hr = IDispatch_Invoke(V_DISPATCH(&obj->v), id_member, - &IID_NULL, LOCALE_SYSTEM_DEFAULT, flags, disp_params, v, &e, &arg_err); - } + hr = IDispatch_Invoke(V_DISPATCH(&obj->v), id_member, + &IID_NULL, LOCALE_SYSTEM_DEFAULT, flags, disp_params, v, &e, &arg_err); if (FAILED(hr)) { char *source = NULL, *desc = NULL, *msg = NULL;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php