quartz: Don't crash if sample allocation fails
Juan Lang
juan.lang at gmail.com
Thu Aug 27 18:09:52 CDT 2009
Fixes bug 19854.
--Juan
-------------- next part --------------
From c1e6b6020f356b2d7d37feab1e23e125a4b9d26a Mon Sep 17 00:00:00 2001
From: Juan Lang <juan.lang at gmail.com>
Date: Thu, 27 Aug 2009 09:04:50 -0700
Subject: [PATCH] Don't crash if sample allocation fails
---
dlls/quartz/mpegsplit.c | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/dlls/quartz/mpegsplit.c b/dlls/quartz/mpegsplit.c
index 14d01a1..e44a10f 100644
--- a/dlls/quartz/mpegsplit.c
+++ b/dlls/quartz/mpegsplit.c
@@ -202,20 +202,20 @@ static HRESULT FillBuffer(MPEGSplitterImpl *This, IMediaSample *pCurrentSample)
LONGLONG rtSampleStart = pin->rtNext - MEDIATIME_FROM_BYTES(4);
LONGLONG rtSampleStop = rtSampleStart + MEDIATIME_FROM_BYTES(length + 4);
- hr = IMemAllocator_GetBuffer(pin->pAlloc, &sample, NULL, NULL, 0);
-
if (rtSampleStop > pin->rtStop)
rtSampleStop = MEDIATIME_FROM_BYTES(ALIGNUP(BYTES_FROM_MEDIATIME(pin->rtStop), pin->cbAlign));
- IMediaSample_SetTime(sample, &rtSampleStart, &rtSampleStop);
- IMediaSample_SetPreroll(sample, 0);
- IMediaSample_SetDiscontinuity(sample, 0);
- IMediaSample_SetSyncPoint(sample, 1);
- pin->rtCurrent = rtSampleStart;
- pin->rtNext = rtSampleStop;
-
+ hr = IMemAllocator_GetBuffer(pin->pAlloc, &sample, NULL, NULL, 0);
if (SUCCEEDED(hr))
+ {
+ IMediaSample_SetTime(sample, &rtSampleStart, &rtSampleStop);
+ 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 (FAILED(hr))
FIXME("o_Ox%08x\n", hr);
}
--
1.6.3.2
More information about the wine-patches
mailing list