Sven Baars : ole32: Fix some memory leaks (Valgrind).

Alexandre Julliard julliard at winehq.org
Tue Feb 5 16:01:30 CST 2019


Module: wine
Branch: master
Commit: e32b30c323340e3f35b030e82b8a93427c5c4b5c
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=e32b30c323340e3f35b030e82b8a93427c5c4b5c

Author: Sven Baars <sven.wine at gmail.com>
Date:   Wed Jan 30 11:35:23 2019 +0100

ole32: Fix some memory leaks (Valgrind).

Signed-off-by: Sven Baars <sven.wine at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ole32/compositemoniker.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c
index 75d97fa..94f4a72 100644
--- a/dlls/ole32/compositemoniker.c
+++ b/dlls/ole32/compositemoniker.c
@@ -433,6 +433,7 @@ static HRESULT WINAPI
 CompositeMonikerImpl_Reduce(IMoniker* iface, IBindCtx* pbc, DWORD dwReduceHowFar,
                IMoniker** ppmkToLeft, IMoniker** ppmkReduced)
 {
+    HRESULT   res;
     IMoniker *tempMk,*antiMk,*rightMostMk,*leftReducedComposedMk,*rightMostReducedMk;
     IEnumMoniker *enumMoniker;
 
@@ -453,7 +454,11 @@ CompositeMonikerImpl_Reduce(IMoniker* iface, IBindCtx* pbc, DWORD dwReduceHowFar
         IMoniker_ComposeWith(iface,antiMk,0,&tempMk);
         IMoniker_Release(antiMk);
 
-        return IMoniker_Reduce(rightMostMk,pbc,dwReduceHowFar,&tempMk, ppmkReduced);
+        res = IMoniker_Reduce(rightMostMk,pbc,dwReduceHowFar,&tempMk, ppmkReduced);
+        IMoniker_Release(tempMk);
+        IMoniker_Release(rightMostMk);
+
+        return res;
     }
     else if (*ppmkToLeft==NULL)
 
@@ -473,13 +478,16 @@ CompositeMonikerImpl_Reduce(IMoniker* iface, IBindCtx* pbc, DWORD dwReduceHowFar
         /* If any of the components  reduces itself, the method returns S_OK and passes back a composite */
         /* of the reduced components */
         if (IMoniker_Reduce(rightMostMk,pbc,dwReduceHowFar,NULL,&rightMostReducedMk) &&
-            IMoniker_Reduce(rightMostMk,pbc,dwReduceHowFar,&tempMk,&leftReducedComposedMk)
-           )
+            IMoniker_Reduce(rightMostMk,pbc,dwReduceHowFar,&tempMk,&leftReducedComposedMk) ){
+            IMoniker_Release(tempMk);
+            IMoniker_Release(rightMostMk);
 
             return CreateGenericComposite(leftReducedComposedMk,rightMostReducedMk,ppmkReduced);
-
+        }
         else{
             /* If no reduction occurred, the method passes back the same moniker and returns MK_S_REDUCED_TO_SELF.*/
+            IMoniker_Release(tempMk);
+            IMoniker_Release(rightMostMk);
 
             IMoniker_AddRef(iface);
 




More information about the wine-cvs mailing list