From ec124be8239b6292ba239bb24f125cd4e267fdd5 Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Tue, 22 Apr 2008 13:44:33 -0700 Subject: [PATCH] quartz: Add some sanity checks to file splitter. --- dlls/quartz/filesource.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c index 930ebfc5689..396384fc476 100644 --- a/dlls/quartz/filesource.c +++ b/dlls/quartz/filesource.c @@ -1107,6 +1107,9 @@ static HRESULT WINAPI FileAsyncReader_WaitForNext(IAsyncReader * iface, DWORD dw if (!This->bFlushing) { + if (!This->pHead) + ERR("Called without samples in queue!\n"); + /* wait for the read to finish or timeout */ if (WaitForSingleObject(This->hEvent, dwTimeout) == WAIT_TIMEOUT) hr = VFW_E_TIMEOUT; @@ -1139,10 +1142,10 @@ static HRESULT WINAPI FileAsyncReader_WaitForNext(IAsyncReader * iface, DWORD dw *pdwUser = pDataRq->dwUserData; if (This->bFlushing) - { hr = VFW_E_WRONG_STATE; + + if (FAILED(hr)) dwBytes = 0; - } /* Set the time on the sample */ IMediaSample_SetActualDataLength(pDataRq->pSample, dwBytes); @@ -1156,6 +1159,12 @@ static HRESULT WINAPI FileAsyncReader_WaitForNext(IAsyncReader * iface, DWORD dw assert(rtStop <= rtSampleStop); IMediaSample_SetTime(pDataRq->pSample, &rtStart, &rtStop); + assert(rtStart == rtSampleStart); + if (hr == S_OK) + assert(rtStop == rtSampleStop); + else + assert(rtStop == rtStart); + } /* no need to close event handle since we will close it when the pin is destroyed */