Module: wine Branch: master Commit: d721eee1ddbd4fc56947573b83c8642d73688e85 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d721eee1ddbd4fc56947573b83...
Author: Nikolay Sivov nsivov@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