From 09adcee2635cb8094893933e09bd5de116494cd1 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Sat, 29 Aug 2009 14:23:48 +0200 Subject: [PATCH] ole32: Fix various missing Release calls on monikers. --- dlls/ole32/compositemoniker.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c index 57fb4e698df..5535a97681b 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{