Erich Hoover : quartz: Samples should be freed when IAsyncReader:: Request fails.
Module: wine Branch: master Commit: cd4ee69ef3c7ea94bae78dd9ee29be93d5fe0dbb URL: http://source.winehq.org/git/wine.git/?a=commit;h=cd4ee69ef3c7ea94bae78dd9ee... Author: Erich Hoover <ehoover(a)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);
participants (1)
-
Alexandre Julliard