Huw Davies : ole32: Rewrite _Run() to return early on failure.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Oct 14 11:12:50 CDT 2015


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Wed Oct 14 10:33:47 2015 +0100

ole32: Rewrite _Run() to return early on failure.

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ole32/defaulthandler.c | 52 +++++++++++++++++++++++++--------------------
 1 file changed, 29 insertions(+), 23 deletions(-)

diff --git a/dlls/ole32/defaulthandler.c b/dlls/ole32/defaulthandler.c
index 913d4af..1903932 100644
--- a/dlls/ole32/defaulthandler.c
+++ b/dlls/ole32/defaulthandler.c
@@ -1330,26 +1330,30 @@ static HRESULT WINAPI DefaultHandler_Run(
   This->object_state = object_state_running;
 
   hr = IOleObject_Advise(This->pOleDelegate, &This->IAdviseSink_iface, &This->dwAdvConn);
+  if (FAILED(hr)) goto fail;
 
-  if (SUCCEEDED(hr) && This->clientSite)
-    hr = IOleObject_SetClientSite(This->pOleDelegate, This->clientSite);
-
-  if (SUCCEEDED(hr))
+  if (This->clientSite)
   {
-    IOleObject_QueryInterface(This->pOleDelegate, &IID_IPersistStorage,
-                              (void **)&This->pPSDelegate);
-    if (This->pPSDelegate)
-    {
-      if(This->storage_state == storage_state_initialised)
-        hr = IPersistStorage_InitNew(This->pPSDelegate, This->storage);
-      else if(This->storage_state == storage_state_loaded)
-        hr = IPersistStorage_Load(This->pPSDelegate, This->storage);
-    }
+    hr = IOleObject_SetClientSite(This->pOleDelegate, This->clientSite);
+    if (FAILED(hr)) goto fail;
   }
 
-  if (SUCCEEDED(hr) && This->containerApp)
+  hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IPersistStorage,
+                                 (void **)&This->pPSDelegate);
+  if (FAILED(hr)) goto fail;
+
+  if (This->storage_state == storage_state_initialised)
+      hr = IPersistStorage_InitNew(This->pPSDelegate, This->storage);
+  else if (This->storage_state == storage_state_loaded)
+      hr = IPersistStorage_Load(This->pPSDelegate, This->storage);
+  if (FAILED(hr)) goto fail;
+
+  if (This->containerApp)
+  {
     hr = IOleObject_SetHostNames(This->pOleDelegate, This->containerApp,
                                  This->containerObj);
+    if (FAILED(hr)) goto fail;
+  }
 
   /* FIXME: do more stuff here:
    * - IOleObject_GetMiscStatus
@@ -1357,20 +1361,22 @@ static HRESULT WINAPI DefaultHandler_Run(
    * - IOleCache_OnRun
    */
 
-  if (SUCCEEDED(hr))
-    hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IDataObject,
-                                   (void **)&This->pDataDelegate);
+  hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IDataObject,
+                                 (void **)&This->pDataDelegate);
+  if (FAILED(hr)) goto fail;
 
-  if (SUCCEEDED(hr) && This->dataAdviseHolder)
-    hr = DataAdviseHolder_OnConnect(This->dataAdviseHolder, This->pDataDelegate);
-
-  if (FAILED(hr))
+  if (This->dataAdviseHolder)
   {
-    DefaultHandler_Stop(This);
-    release_delegates(This);
+    hr = DataAdviseHolder_OnConnect(This->dataAdviseHolder, This->pDataDelegate);
+    if (FAILED(hr)) goto fail;
   }
 
   return hr;
+
+fail:
+  DefaultHandler_Stop(This);
+  release_delegates(This);
+  return hr;
 }
 
 /************************************************************************




More information about the wine-cvs mailing list