Nikolay Sivov : shlwapi: Fix interface leaks in SHIsSameObject.
Alexandre Julliard
julliard at winehq.org
Mon Mar 29 09:57:50 CDT 2010
Module: wine
Branch: master
Commit: 442364c1be573a869408759b7d55bb9e2b0ac35a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=442364c1be573a869408759b7d55bb9e2b0ac35a
Author: Nikolay Sivov <nsivov at 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;
}
/*************************************************************************
More information about the wine-cvs
mailing list