Module: wine Branch: master Commit: 853dc5ec2f474b892ff9d83efcf892345b0a9664 URL: http://source.winehq.org/git/wine.git/?a=commit;h=853dc5ec2f474b892ff9d83efc...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Mar 20 09:49:56 2015 +0300
ole32: Improve error handling in GetClassFile() (PVS-Studio).
---
dlls/ole32/moniker.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/dlls/ole32/moniker.c b/dlls/ole32/moniker.c index d694df9..5c46de9 100644 --- a/dlls/ole32/moniker.c +++ b/dlls/ole32/moniker.c @@ -1198,7 +1198,7 @@ HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid) IStorage *pstg=0; HRESULT res; int nbElm, length, i; - LONG sizeProgId; + LONG sizeProgId, ret; LPOLESTR *pathDec=0,absFile=0,progId=0; LPWSTR extension; static const WCHAR bkslashW[] = {'\',0}; @@ -1264,26 +1264,23 @@ HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid) return MK_E_INVALIDEXTENSION; }
- res=RegQueryValueW(HKEY_CLASSES_ROOT, extension, NULL, &sizeProgId); + ret = RegQueryValueW(HKEY_CLASSES_ROOT, extension, NULL, &sizeProgId);
/* get the progId associated to the extension */ progId = CoTaskMemAlloc(sizeProgId); - res = RegQueryValueW(HKEY_CLASSES_ROOT, extension, progId, &sizeProgId); - - if (res==ERROR_SUCCESS) + ret = RegQueryValueW(HKEY_CLASSES_ROOT, extension, progId, &sizeProgId); + if (!ret) /* return the clsid associated to the progId */ - res= CLSIDFromProgID(progId,pclsid); + res = CLSIDFromProgID(progId,pclsid); + else + res = HRESULT_FROM_WIN32(ret);
for(i=0; pathDec[i]!=NULL;i++) CoTaskMemFree(pathDec[i]); CoTaskMemFree(pathDec);
CoTaskMemFree(progId); - - if (res==ERROR_SUCCESS) - return res; - - return MK_E_INVALIDEXTENSION; + return res != S_OK ? MK_E_INVALIDEXTENSION : res; }
/***********************************************************************