Aric Stewart : shlwapi: Failure in IConnectionPoint_GetConnectionInterface does not prevent Invoking .

Alexandre Julliard julliard at winehq.org
Fri Dec 11 11:04:44 CST 2009


Module: wine
Branch: master
Commit: 3dbc0b066707e73c823a766f5ba5706dc29f9312
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3dbc0b066707e73c823a766f5ba5706dc29f9312

Author: Aric Stewart <aric at codeweavers.com>
Date:   Thu Dec 10 13:16:06 2009 -0600

shlwapi: Failure in IConnectionPoint_GetConnectionInterface does not prevent Invoking.

---

 dlls/shlwapi/ordinal.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c
index ba614d3..0b9999e 100644
--- a/dlls/shlwapi/ordinal.c
+++ b/dlls/shlwapi/ordinal.c
@@ -2938,7 +2938,7 @@ static HRESULT SHLWAPI_InvokeByIID(
   while(IEnumConnections_Next(enumerator, 1, &rgcd, NULL)==S_OK)
   {
     IDispatch *dispIface;
-    if (SUCCEEDED(IUnknown_QueryInterface(rgcd.pUnk, iid, (LPVOID*)&dispIface)) ||
+    if ((iid && SUCCEEDED(IUnknown_QueryInterface(rgcd.pUnk, iid, (LPVOID*)&dispIface))) ||
         SUCCEEDED(IUnknown_QueryInterface(rgcd.pUnk, &IID_IDispatch, (LPVOID*)&dispIface)))
     {
       IDispatch_Invoke(dispIface, dispId, &IID_NULL, 0, DISPATCH_METHOD, dispParams, NULL, NULL, NULL);
@@ -2966,6 +2966,8 @@ HRESULT WINAPI IConnectionPoint_InvokeWithCancel( IConnectionPoint* iCP,
     result = IConnectionPoint_GetConnectionInterface(iCP, &iid);
     if (SUCCEEDED(result))
         result = SHLWAPI_InvokeByIID(iCP, &iid, dispId, dispParams);
+    else
+        result = SHLWAPI_InvokeByIID(iCP, NULL, dispId, dispParams);
 
     return result;
 }
@@ -2989,6 +2991,8 @@ HRESULT WINAPI IConnectionPoint_SimpleInvoke(
   result = IConnectionPoint_GetConnectionInterface(iCP, &iid);
   if (SUCCEEDED(result))
     result = SHLWAPI_InvokeByIID(iCP, &iid, dispId, dispParams);
+  else
+    result = SHLWAPI_InvokeByIID(iCP, NULL, dispId, dispParams);
 
   return result;
 }




More information about the wine-cvs mailing list