cvs: php-src /ext/com_dotnet com_com.c
| From: | Wez Furlong | Date: | Fri, 28 Nov 2003 17:11:16 +0000 |
| Subject: | cvs: php-src /ext/com_dotnet com_com.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-24695@lists.php.net to get a copy of this message | ||
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;