Module: wine Branch: master Commit: 3d61013e7c8e6a6e7f4329868d220727627ab21f URL: http://source.winehq.org/git/wine.git/?a=commit;h=3d61013e7c8e6a6e7f4329868d...
Author: Andrew Talbot andrew.talbot@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; } }