Nikolay Sivov : gameux: Cleanup failure handling when processing main definition element, use better naming.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Oct 6 15:19:10 CDT 2014


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Apr 14 22:39:54 2014 +0400

gameux: Cleanup failure handling when processing main definition element, use better naming.

---

 dlls/gameux/gameexplorer.c | 77 ++++++++++++++++++++--------------------------
 1 file changed, 34 insertions(+), 43 deletions(-)

diff --git a/dlls/gameux/gameexplorer.c b/dlls/gameux/gameexplorer.c
index cbe3e8d..1690bd7 100644
--- a/dlls/gameux/gameexplorer.c
+++ b/dlls/gameux/gameexplorer.c
@@ -325,67 +325,58 @@ static HRESULT GAMEUX_ProcessGameDefinitionElement(
  *  GameData                            [O]     structure where data loaded from
  *                                              XML element will be stored in
  */
-static HRESULT GAMEUX_ParseGameDefinition(
-        IXMLDOMElement *gdElement,
-        struct GAMEUX_GAME_DATA *GameData)
+static HRESULT GAMEUX_ParseGameDefinition(IXMLDOMElement *gamedef, struct GAMEUX_GAME_DATA *game_data)
 {
-    static const WCHAR sGameId[] = {'g','a','m','e','I','D',0};
-
-    HRESULT hr = S_OK;
-    BSTR bstrAttribute;
-    VARIANT variant;
-    IXMLDOMNodeList *childrenList;
-    IXMLDOMNode *nextNode;
-    IXMLDOMElement *nextElement;
+    static const WCHAR gameidW[] = {'g','a','m','e','I','D',0};
+    IXMLDOMNodeList *props;
+    VARIANT var;
+    HRESULT hr;
+    BSTR attr;
 
-    TRACE("(%p, %p)\n", gdElement, GameData);
+    TRACE("(%p, %p)\n", gamedef, game_data);
 
-    bstrAttribute = SysAllocString(sGameId);
-    if(!bstrAttribute)
-        hr = E_OUTOFMEMORY;
+    attr = SysAllocString(gameidW);
+    if (!attr)
+        return E_OUTOFMEMORY;
 
-    hr = IXMLDOMElement_getAttribute(gdElement, bstrAttribute, &variant);
+    hr = IXMLDOMElement_getAttribute(gamedef, attr, &var);
+    SysFreeString(attr);
 
-    if(SUCCEEDED(hr))
+    if (SUCCEEDED(hr))
     {
-        hr = ( GUIDFromStringW(V_BSTR(&variant), &GameData->guidApplicationId)==TRUE ? S_OK : E_FAIL);
-
-        SysFreeString(V_BSTR(&variant));
+        hr = CLSIDFromString(V_BSTR(&var), &game_data->guidApplicationId);
+        VariantClear(&var);
     }
 
-    SysFreeString(bstrAttribute);
+    if (SUCCEEDED(hr))
+        hr = IXMLDOMElement_get_childNodes(gamedef, &props);
 
-    /* browse subnodes */
-    if(SUCCEEDED(hr))
-        hr = IXMLDOMElement_get_childNodes(gdElement, &childrenList);
+    if (FAILED(hr))
+        return hr;
 
-    if(SUCCEEDED(hr))
+    do
     {
-        do
+        IXMLDOMNode *prop;
+
+        hr = IXMLDOMNodeList_nextNode(props, &prop);
+        if (hr == S_OK)
         {
-            hr = IXMLDOMNodeList_nextNode(childrenList, &nextNode);
+            IXMLDOMElement *element;
 
-            if(hr == S_OK)
+            hr = IXMLDOMNode_QueryInterface(prop, &IID_IXMLDOMElement, (void**)&element);
+            if (hr == S_OK)
             {
-                hr = IXMLDOMNode_QueryInterface(nextNode, &IID_IXMLDOMElement,
-                                                (LPVOID*)&nextElement);
-
-                if(SUCCEEDED(hr))
-                {
-                    hr = GAMEUX_ProcessGameDefinitionElement(nextElement, GameData);
-                    IXMLDOMElement_Release(nextElement);
-                }
-
-                IXMLDOMNode_Release(nextNode);
+                hr = GAMEUX_ProcessGameDefinitionElement(element, game_data);
+                IXMLDOMElement_Release(element);
             }
-        }
-        while(hr == S_OK);
-        hr = S_OK;
 
-        IXMLDOMNodeList_Release(childrenList);
+            IXMLDOMNode_Release(prop);
+        }
     }
+    while (hr == S_OK);
+    IXMLDOMNodeList_Release(props);
 
-    return hr;
+    return FAILED(hr) ? hr : S_OK;
 }
 
 struct parse_gdf_thread_param




More information about the wine-cvs mailing list