Module: wine Branch: master Commit: 442364c1be573a869408759b7d55bb9e2b0ac35a URL: http://source.winehq.org/git/wine.git/?a=commit;h=442364c1be573a869408759b7d...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Sat Mar 27 03:31:59 2010 +0300
shlwapi: Fix interface leaks in SHIsSameObject.
---
dlls/shlwapi/ordinal.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c index 019502d..70c3285 100644 --- a/dlls/shlwapi/ordinal.c +++ b/dlls/shlwapi/ordinal.c @@ -1264,9 +1264,10 @@ LPCSTR WINAPI PathSkipLeadingSlashesA(LPCSTR lpszSrc) */ BOOL WINAPI SHIsSameObject(IUnknown* lpInt1, IUnknown* lpInt2) { - LPVOID lpUnknown1, lpUnknown2; + IUnknown *lpUnknown1, *lpUnknown2; + BOOL ret;
- TRACE("%p %p\n", lpInt1, lpInt2); + TRACE("(%p %p)\n", lpInt1, lpInt2);
if (!lpInt1 || !lpInt2) return FALSE; @@ -1274,16 +1275,21 @@ BOOL WINAPI SHIsSameObject(IUnknown* lpInt1, IUnknown* lpInt2) if (lpInt1 == lpInt2) return TRUE;
- if (FAILED(IUnknown_QueryInterface(lpInt1, &IID_IUnknown, &lpUnknown1))) + if (IUnknown_QueryInterface(lpInt1, &IID_IUnknown, (void**)&lpUnknown1) != S_OK) return FALSE;
- if (FAILED(IUnknown_QueryInterface(lpInt2, &IID_IUnknown, &lpUnknown2))) + if (IUnknown_QueryInterface(lpInt2, &IID_IUnknown, (void**)&lpUnknown2) != S_OK) + { + IUnknown_Release(lpUnknown1); return FALSE; + }
- if (lpUnknown1 == lpUnknown2) - return TRUE; + ret = lpUnknown1 == lpUnknown2;
- return FALSE; + IUnknown_Release(lpUnknown1); + IUnknown_Release(lpUnknown2); + + return ret; }
/*************************************************************************