Jacek Caban : mshtml: HTMLWindow_item code clean up.

Alexandre Julliard julliard at winehq.org
Thu Nov 3 13:10:15 CDT 2011


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Nov  3 19:24:09 2011 +0100

mshtml: HTMLWindow_item code clean up.

---

 dlls/mshtml/htmlwindow.c |   55 +++++++++++++++++++++-------------------------
 1 files changed, 25 insertions(+), 30 deletions(-)

diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index ea02cb1..b0b872c 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -323,8 +323,8 @@ static HRESULT WINAPI HTMLWindow2_item(IHTMLWindow2 *iface, VARIANT *pvarIndex,
 {
     HTMLWindow *This = impl_from_IHTMLWindow2(iface);
     nsIDOMWindowCollection *nsFrames;
-    HTMLWindow *window;
-    HRESULT hres;
+    HTMLWindow *window = NULL;
+    HRESULT hres = S_OK;
     nsresult nsres;
 
     TRACE("(%p)->(%p %p)\n", This, pvarIndex, pvarResult);
@@ -335,29 +335,28 @@ static HRESULT WINAPI HTMLWindow2_item(IHTMLWindow2 *iface, VARIANT *pvarIndex,
         return E_FAIL;
     }
 
-    if(V_VT(pvarIndex) == VT_I4) {
+    switch(V_VT(pvarIndex)) {
+    case VT_I4: {
         int index = V_I4(pvarIndex);
         TRACE("Getting index %d\n", index);
-        if(index < 0) {
-            hres = DISP_E_MEMBERNOTFOUND;
-            goto cleanup;
-        }
+        if(index < 0)
+            break;
         hres = get_frame_by_index(nsFrames, index, &window);
-        if(FAILED(hres))
-            goto cleanup;
-    }else if(V_VT(pvarIndex) == VT_UINT) {
+        break;
+    }
+    case VT_UINT: {
         unsigned int index = V_UINT(pvarIndex);
         TRACE("Getting index %u\n", index);
         hres = get_frame_by_index(nsFrames, index, &window);
-        if(FAILED(hres))
-            goto cleanup;
-    }else if(V_VT(pvarIndex) == VT_BSTR) {
+        break;
+    }
+    case VT_BSTR: {
         BSTR str = V_BSTR(pvarIndex);
         PRUint32 length, i;
 
         TRACE("Getting name %s\n", wine_dbgstr_w(str));
 
-        nsres = nsIDOMWindowCollection_GetLength(nsFrames, &length);
+        nsIDOMWindowCollection_GetLength(nsFrames, &length);
 
         window = NULL;
         for(i = 0; i < length && !window; ++i) {
@@ -369,7 +368,7 @@ static HRESULT WINAPI HTMLWindow2_item(IHTMLWindow2 *iface, VARIANT *pvarIndex,
             if(NS_FAILED(nsres)) {
                 FIXME("nsIDOMWindowCollection_Item failed: 0x%08x\n", nsres);
                 hres = E_FAIL;
-                goto cleanup;
+                break;
             }
 
             cur_window = nswindow_to_window(nsWindow);
@@ -379,7 +378,7 @@ static HRESULT WINAPI HTMLWindow2_item(IHTMLWindow2 *iface, VARIANT *pvarIndex,
             hres = IHTMLElement_get_id(&cur_window->frame_element->element.IHTMLElement_iface, &id);
             if(FAILED(hres)) {
                 FIXME("IHTMLElement_get_id failed: 0x%08x\n", hres);
-                goto cleanup;
+                break;
             }
 
             if(!strcmpW(id, str))
@@ -387,26 +386,22 @@ static HRESULT WINAPI HTMLWindow2_item(IHTMLWindow2 *iface, VARIANT *pvarIndex,
 
             SysFreeString(id);
         }
-
-        if(!window) {
-            hres = DISP_E_MEMBERNOTFOUND;
-            goto cleanup;
-        }
-    }else {
+        break;
+    }
+    default:
         hres = E_INVALIDARG;
-        goto cleanup;
     }
 
+    nsIDOMWindowCollection_Release(nsFrames);
+    if(FAILED(hres))
+        return hres;
+    if(!window)
+        return DISP_E_MEMBERNOTFOUND;
+
     IHTMLWindow2_AddRef(&window->IHTMLWindow2_iface);
     V_VT(pvarResult) = VT_DISPATCH;
     V_DISPATCH(pvarResult) = (IDispatch*)window;
-
-    hres = S_OK;
-
-cleanup:
-    nsIDOMWindowCollection_Release(nsFrames);
-
-    return hres;
+    return S_OK;
 }
 
 static HRESULT WINAPI HTMLWindow2_get_length(IHTMLWindow2 *iface, LONG *p)




More information about the wine-cvs mailing list