Andrew Talbot : avifil32: Fix some memory leaks.

Alexandre Julliard julliard at winehq.org
Thu Sep 13 07:17:19 CDT 2007


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

Author: Andrew Talbot <andrew.talbot at talbotville.com>
Date:   Wed Sep 12 17:52:18 2007 +0100

avifil32: Fix some memory leaks.

---

 dlls/avifil32/api.c     |    2 +-
 dlls/avifil32/avifile.c |   16 +++++++++-------
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/dlls/avifil32/api.c b/dlls/avifil32/api.c
index 592bac3..2717bf0 100644
--- a/dlls/avifil32/api.c
+++ b/dlls/avifil32/api.c
@@ -1913,7 +1913,7 @@ HRESULT WINAPI AVISaveVW(LPCWSTR szFile, CLSID *pclsidHandler,
 	  hres = AVIStreamReadFormat(pInStreams[curStream], sInfo.dwStart,
 				     lpBuffer, &lBufferSize);
 	  if (FAILED(hres))
-	    return hres;
+	    goto error;
 	  AVIStreamSetFormat(pOutStreams[curStream], sInfo.dwStart,
 			     lpBuffer, lBufferSize);
 
diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c
index 3ed6386..a23e326 100644
--- a/dlls/avifil32/avifile.c
+++ b/dlls/avifil32/avifile.c
@@ -1018,14 +1018,15 @@ static HRESULT WINAPI IAVIStream_fnSetFormat(IAVIStream *iface, LONG pos,
       lppc->peNew[n].peFlags = 0;
     }
 
-    if (mmioSeek(This->paf->hmmio, This->paf->dwNextFramePos, SEEK_SET) == -1)
-      return AVIERR_FILEWRITE;
-    if (mmioCreateChunk(This->paf->hmmio, &ck, 0) != S_OK)
-      return AVIERR_FILEWRITE;
-    if (mmioWrite(This->paf->hmmio, (HPSTR)lppc, ck.cksize) != ck.cksize)
-      return AVIERR_FILEWRITE;
-    if (mmioAscend(This->paf->hmmio, &ck, 0) != S_OK)
+    if (mmioSeek(This->paf->hmmio, This->paf->dwNextFramePos, SEEK_SET) == -1 ||
+        mmioCreateChunk(This->paf->hmmio, &ck, 0) != S_OK ||
+        mmioWrite(This->paf->hmmio, (HPSTR)lppc, ck.cksize) != ck.cksize ||
+        mmioAscend(This->paf->hmmio, &ck, 0) != S_OK)
+    {
+      HeapFree(GetProcessHeap(), 0, lppc);
       return AVIERR_FILEWRITE;
+    }
+
     This->paf->dwNextFramePos += ck.cksize + 2 * sizeof(DWORD);
 
     HeapFree(GetProcessHeap(), 0, lppc);
@@ -1939,6 +1940,7 @@ static HRESULT AVIFILE_LoadIndex(const IAVIFileImpl *This, DWORD size, DWORD off
       HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, pStream->nIdxFrames * sizeof(AVIINDEXENTRY));
     if (pStream->idxFrames == NULL && pStream->nIdxFrames > 0) {
       pStream->nIdxFrames = 0;
+      HeapFree(GetProcessHeap(), 0, lp);
       return AVIERR_MEMORY;
     }
   }




More information about the wine-cvs mailing list