Chris Robinson : quartz: Cleanup properly around error conditions and avoid a potential infinite loop .

Alexandre Julliard julliard at wine.codeweavers.com
Tue Mar 13 16:56:43 CDT 2007


Module: wine
Branch: master
Commit: 559d541cf8f42e5418710d1288eaaa15e2602f4c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=559d541cf8f42e5418710d1288eaaa15e2602f4c

Author: Chris Robinson <chris.kcat at gmail.com>
Date:   Tue Mar 13 10:21:17 2007 -0700

quartz: Cleanup properly around error conditions and avoid a potential infinite loop.

---

 dlls/quartz/acmwrapper.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/dlls/quartz/acmwrapper.c b/dlls/quartz/acmwrapper.c
index 4b2d143..344779c 100644
--- a/dlls/quartz/acmwrapper.c
+++ b/dlls/quartz/acmwrapper.c
@@ -78,7 +78,7 @@ static HRESULT ACMWrapper_ProcessSampleData(TransformFilterImpl* pTransformFilte
     hr = IPin_ConnectionMediaType(This->tf.ppPins[0], &amt);
     if (FAILED(hr)) {
 	ERR("Unable to retrieve media type\n");
-	goto error;
+	return hr;
     }
 
     while(!stop)
@@ -99,7 +99,7 @@ static HRESULT ACMWrapper_ProcessSampleData(TransformFilterImpl* pTransformFilte
 	hr = OutputPin_GetDeliveryBuffer((OutputPin*)This->tf.ppPins[1], &pSample, NULL, NULL, 0);
 	if (FAILED(hr)) {
 	    ERR("Unable to get delivery buffer (%x)\n", hr);
-	    goto error;
+	    return hr;
 	}
 
 	hr = IMediaSample_SetActualDataLength(pSample, 0);
@@ -152,11 +152,13 @@ static HRESULT ACMWrapper_ProcessSampleData(TransformFilterImpl* pTransformFilte
         }
 
 error:
-	if (unprepare_header && (res = acmStreamUnprepareHeader(This->has, &ash, 0)))
-	    ERR("Cannot unprepare header %d\n", res);
+        if (unprepare_header && (res = acmStreamUnprepareHeader(This->has, &ash, 0)))
+            ERR("Cannot unprepare header %d\n", res);
+        unprepare_header = FALSE;
 
-	if (pSample)
-	    IMediaSample_Release(pSample);
+        if (pSample)
+            IMediaSample_Release(pSample);
+        pSample = NULL;
     }
 
     return hr;




More information about the wine-cvs mailing list