=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: ole32: Don' t leak memory allocated by FileMonikerImpl_DecomposePath (coverity).

Alexandre Julliard julliard at winehq.org
Mon Oct 29 13:52:50 CDT 2012


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

Author: André Hentschel <nerv at dawncrow.de>
Date:   Sun Oct 28 16:16:43 2012 +0100

ole32: Don't leak memory allocated by FileMonikerImpl_DecomposePath (coverity).

---

 dlls/ole32/filemoniker.c |   29 +++++++++++++++--------------
 1 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/dlls/ole32/filemoniker.c b/dlls/ole32/filemoniker.c
index 20c0870..b3a5cc2 100644
--- a/dlls/ole32/filemoniker.c
+++ b/dlls/ole32/filemoniker.c
@@ -711,24 +711,25 @@ FileMonikerImpl_ComposeWith(IMoniker* iface, IMoniker* pmkRight,
         /* the length of the composed path string  is raised by the sum of the two paths lengths  */
         newStr=HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*(lstrlenW(str1)+lstrlenW(str2)+1));
 
-	  if (newStr==NULL)
-		return E_OUTOFMEMORY;
-
-        /* new path is the concatenation of the rest of str1 and str2 */
-        for(*newStr=0,j=0;j<=lastIdx1;j++)
-            strcatW(newStr,strDec1[j]);
+        if (newStr)
+        {
+            /* new path is the concatenation of the rest of str1 and str2 */
+            for(*newStr=0,j=0;j<=lastIdx1;j++)
+                strcatW(newStr,strDec1[j]);
 
-        if ((strDec2[i]==NULL && lastIdx1>-1 && lastIdx2>-1) || lstrcmpW(strDec2[i],bkSlash)!=0)
-            strcatW(newStr,bkSlash);
+            if ((strDec2[i]==NULL && lastIdx1>-1 && lastIdx2>-1) || lstrcmpW(strDec2[i],bkSlash)!=0)
+                strcatW(newStr,bkSlash);
 
-        for(j=i;j<=lastIdx2;j++)
-            strcatW(newStr,strDec2[j]);
+            for(j=i;j<=lastIdx2;j++)
+                strcatW(newStr,strDec2[j]);
 
-        /* create a new moniker with the new string */
-        res=CreateFileMoniker(newStr,ppmkComposite);
+            /* create a new moniker with the new string */
+            res=CreateFileMoniker(newStr,ppmkComposite);
 
-        /* free all strings space memory used by this function */
-        HeapFree(GetProcessHeap(),0,newStr);
+            /* free all strings space memory used by this function */
+            HeapFree(GetProcessHeap(),0,newStr);
+        }
+        else res = E_OUTOFMEMORY;
 
         for(i=0; strDec1[i]!=NULL;i++)
             CoTaskMemFree(strDec1[i]);




More information about the wine-cvs mailing list