From: Thomas Faber Subject: quartz: Avoid side-effects in asserts. Message-Id: <53D5088F.5000900@reactos.org> Date: Sun, 27 Jul 2014 16:11:27 +0200 From 8536402fc5d86ebbfd17dc9957bd0c8c3bc41f8c Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sat, 26 Jul 2014 22:04:29 +0200 Subject: quartz: Avoid side-effects in asserts. --- dlls/quartz/avisplit.c | 22 +++++++++++++++++----- dlls/quartz/parser.c | 7 +++++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/dlls/quartz/avisplit.c b/dlls/quartz/avisplit.c index d74c8ab..1f57045 100644 --- a/dlls/quartz/avisplit.c +++ b/dlls/quartz/avisplit.c @@ -151,6 +151,7 @@ static HRESULT AVISplitter_next_request(AVISplitterImpl *This, DWORD streamnumbe PullPin *pin = This->Parser.pInputPin; IMediaSample *sample = NULL; HRESULT hr; + ULONG ref; TRACE("(%p, %u)->()\n", This, streamnumber); @@ -264,7 +265,10 @@ static HRESULT AVISplitter_next_request(AVISplitterImpl *This, DWORD streamnumbe hr = IAsyncReader_Request(pin->pReader, sample, streamnumber); if (FAILED(hr)) - assert(IMediaSample_Release(sample) == 0); + { + ref = IMediaSample_Release(sample); + assert(ref == 0); + } } else { @@ -278,7 +282,8 @@ static HRESULT AVISplitter_next_request(AVISplitterImpl *This, DWORD streamnumbe if (sample) { ERR("There should be no sample!\n"); - assert(IMediaSample_Release(sample) == 0); + ref = IMediaSample_Release(sample); + assert(ref == 0); } } TRACE("--> %08x\n", hr); @@ -510,8 +515,8 @@ static HRESULT AVISplitter_first_request(LPVOID iface) static HRESULT AVISplitter_done_process(LPVOID iface) { AVISplitterImpl *This = iface; - DWORD x; + ULONG ref; for (x = 0; x < This->Parser.cStreams; ++x) { @@ -525,7 +530,10 @@ static HRESULT AVISplitter_done_process(LPVOID iface) stream->thread = NULL; if (stream->sample) - assert(IMediaSample_Release(stream->sample) == 0); + { + ref = IMediaSample_Release(stream->sample); + assert(ref == 0); + } stream->sample = NULL; ResetEvent(stream->packet_queued); @@ -1219,6 +1227,7 @@ static HRESULT AVISplitter_Flush(LPVOID iface) { AVISplitterImpl *This = iface; DWORD x; + ULONG ref; TRACE("(%p)->()\n", This); @@ -1227,7 +1236,10 @@ static HRESULT AVISplitter_Flush(LPVOID iface) StreamData *stream = This->streams + x; if (stream->sample) - assert(IMediaSample_Release(stream->sample) == 0); + { + ref = IMediaSample_Release(stream->sample); + assert(ref == 0); + } stream->sample = NULL; ResetEvent(stream->packet_queued); diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c index b57bae4..cd8d93d 100644 --- a/dlls/quartz/parser.c +++ b/dlls/quartz/parser.c @@ -170,6 +170,7 @@ void Parser_Destroy(ParserImpl *This) { IPin *connected = NULL; ULONG pinref; + HRESULT hr; assert(!This->filter.refCount); PullPin_WaitForStateChange(This->pInputPin, INFINITE); @@ -178,9 +179,11 @@ void Parser_Destroy(ParserImpl *This) IPin_ConnectedTo(&This->pInputPin->pin.IPin_iface, &connected); if (connected) { - assert(IPin_Disconnect(connected) == S_OK); + hr = IPin_Disconnect(connected); + assert(hr == S_OK); IPin_Release(connected); - assert(IPin_Disconnect(&This->pInputPin->pin.IPin_iface) == S_OK); + hr = IPin_Disconnect(&This->pInputPin->pin.IPin_iface); + assert(hr == S_OK); } pinref = IPin_Release(&This->pInputPin->pin.IPin_iface); if (pinref) -- 1.9.0.msysgit.0