avifil32: fix memory leak (found by Smatch)
Lionel_Debroux
lionel_debroux at yahoo.fr
Fri Aug 31 09:21:23 CDT 2007
IAVIStream_fnSetFormat leaks some heap memory in four error paths. Found
in Michael Stefaniuc's list of potential Wine bugs detected
by Smatch.
2007-08-31 Lionel Debroux <lionel_debroux at yahoo.fr>
* dlls/avifil32/avifile.c:
avifil32: fix memory leak (found by Smatch)
-------------- next part --------------
>From 2500d41f6210200221026ed9c39bb0a3760d5ceb Mon Sep 17 00:00:00 2001
From: Lionel Debroux <lionel_debroux at yahoo.fr>
Date: Fri, 31 Aug 2007 16:18:38 +0200
Subject: avifil32: fix memory leak (found by Smatch).
---
dlls/avifil32/avifile.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c
index 3ed6386..7d80a43 100644
--- a/dlls/avifil32/avifile.c
+++ b/dlls/avifil32/avifile.c
@@ -1018,14 +1018,22 @@ 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)
+ if (mmioSeek(This->paf->hmmio, This->paf->dwNextFramePos, SEEK_SET) == -1) {
+ HeapFree(GetProcessHeap(), 0, lppc);
return AVIERR_FILEWRITE;
- if (mmioCreateChunk(This->paf->hmmio, &ck, 0) != S_OK)
+ }
+ if (mmioCreateChunk(This->paf->hmmio, &ck, 0) != S_OK) {
+ HeapFree(GetProcessHeap(), 0, lppc);
return AVIERR_FILEWRITE;
- if (mmioWrite(This->paf->hmmio, (HPSTR)lppc, ck.cksize) != ck.cksize)
+ }
+ if (mmioWrite(This->paf->hmmio, (HPSTR)lppc, ck.cksize) != ck.cksize) {
+ HeapFree(GetProcessHeap(), 0, lppc);
return AVIERR_FILEWRITE;
- if (mmioAscend(This->paf->hmmio, &ck, 0) != S_OK)
+ }
+ if (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);
--
1.4.4.4
More information about the wine-patches
mailing list