[PATCH 5/5] [Ole32]: fix various missing Release calls on monikers
Eric Pouech
eric.pouech at orange.fr
Sat Aug 29 07:23:48 CDT 2009
A+
---
dlls/ole32/compositemoniker.c | 28 ++++++++++------------------
1 files changed, 10 insertions(+), 18 deletions(-)
diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c
index 57fb4e6..5535a97 100644
--- a/dlls/ole32/compositemoniker.c
+++ b/dlls/ole32/compositemoniker.c
@@ -552,6 +552,7 @@ CompositeMonikerImpl_IsEqual(IMoniker* iface,IMoniker* pmkOtherMoniker)
IEnumMoniker *enumMoniker1,*enumMoniker2;
IMoniker *tempMk1,*tempMk2;
HRESULT res1,res2,res;
+ BOOL done;
TRACE("(%p,%p)\n",iface,pmkOtherMoniker);
@@ -567,27 +568,18 @@ CompositeMonikerImpl_IsEqual(IMoniker* iface,IMoniker* pmkOtherMoniker)
IMoniker_Enum(iface,TRUE,&enumMoniker2);
- while(1){
+ do {
res1=IEnumMoniker_Next(enumMoniker1,1,&tempMk1,NULL);
res2=IEnumMoniker_Next(enumMoniker2,1,&tempMk2,NULL);
if((res1==S_OK)&&(res2==S_OK)){
-
- if(IMoniker_IsEqual(tempMk1,tempMk2)==S_FALSE){
- res= S_FALSE;
- break;
- }
- else
- continue;
+ done = (res = IMoniker_IsEqual(tempMk1,tempMk2)) == S_FALSE;
}
- else if ( (res1==S_FALSE) && (res2==S_FALSE) ){
- res = S_OK;
- break;
- }
- else{
- res = S_FALSE;
- break;
+ else
+ {
+ res = (res1==S_FALSE) && (res2==S_FALSE);
+ done = TRUE;
}
if (res1==S_OK)
@@ -595,7 +587,7 @@ CompositeMonikerImpl_IsEqual(IMoniker* iface,IMoniker* pmkOtherMoniker)
if (res2==S_OK)
IMoniker_Release(tempMk2);
- }
+ } while (!done);
IEnumMoniker_Release(enumMoniker1);
IEnumMoniker_Release(enumMoniker2);
@@ -989,12 +981,12 @@ static VOID GetAfterCommonPrefix(IMoniker* pGenMk,IMoniker* commonMk,IMoniker**
nbRestMk++;
IMoniker_Release(tempMk1);
- IMoniker_Release(tempMk1);
+ IMoniker_Release(tempMk2);
break;
}
IMoniker_Release(tempMk1);
- IMoniker_Release(tempMk1);
+ IMoniker_Release(tempMk2);
}
}
else{
More information about the wine-patches
mailing list