Erich Hoover : quartz: Samples should be freed when IAsyncReader:: Request fails.
Alexandre Julliard
julliard at winehq.org
Mon Sep 12 11:43:01 CDT 2011
Module: wine
Branch: master
Commit: cd4ee69ef3c7ea94bae78dd9ee29be93d5fe0dbb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cd4ee69ef3c7ea94bae78dd9ee29be93d5fe0dbb
Author: Erich Hoover <ehoover at mines.edu>
Date: Sun Sep 11 14:10:42 2011 -0600
quartz: Samples should be freed when IAsyncReader::Request fails.
---
dlls/quartz/mpegsplit.c | 19 ++++++++++++++-----
1 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/dlls/quartz/mpegsplit.c b/dlls/quartz/mpegsplit.c
index c556b78..6043f69 100644
--- a/dlls/quartz/mpegsplit.c
+++ b/dlls/quartz/mpegsplit.c
@@ -217,9 +217,14 @@ static HRESULT FillBuffer(MPEGSplitterImpl *This, IMediaSample *pCurrentSample)
IMediaSample_SetPreroll(sample, 0);
IMediaSample_SetDiscontinuity(sample, 0);
IMediaSample_SetSyncPoint(sample, 1);
- pin->rtCurrent = rtSampleStart;
- pin->rtNext = rtSampleStop;
hr = IAsyncReader_Request(pin->pReader, sample, 0);
+ if (SUCCEEDED(hr))
+ {
+ pin->rtCurrent = rtSampleStart;
+ pin->rtNext = rtSampleStop;
+ }
+ else
+ IMediaSample_Release(sample);
}
if (FAILED(hr))
FIXME("o_Ox%08x\n", hr);
@@ -754,15 +759,19 @@ static HRESULT MPEGSplitter_first_request(LPVOID iface)
hr = IMediaSample_SetTime(sample, &rtSampleStart, &rtSampleStop);
- pin->rtCurrent = pin->rtNext;
- pin->rtNext = rtSampleStop;
-
IMediaSample_SetPreroll(sample, FALSE);
IMediaSample_SetDiscontinuity(sample, TRUE);
IMediaSample_SetSyncPoint(sample, 1);
This->seek = 0;
hr = IAsyncReader_Request(pin->pReader, sample, 0);
+ if (SUCCEEDED(hr))
+ {
+ pin->rtCurrent = pin->rtNext;
+ pin->rtNext = rtSampleStop;
+ }
+ else
+ IMediaSample_Release(sample);
}
if (FAILED(hr))
ERR("Horsemen of the apocalypse came to bring error 0x%08x\n", hr);
More information about the wine-cvs
mailing list