Module: wine Branch: stable Commit: 427b8c679172ad750e7e5772d2f2124fc2c061b8 URL: https://source.winehq.org/git/wine.git/?a=commit;h=427b8c679172ad750e7e5772d...
Author: Sven Baars sven.wine@gmail.com Date: Tue Jan 29 20:28:58 2019 +0100
strmbase: Fix some memory leaks (Valgrind).
Signed-off-by: Sven Baars sven.wine@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit c7f51d85ecf0ee63a3c4a818c3c1c9727562b0a7) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
dlls/strmbase/mediatype.c | 9 ++++++--- dlls/strmbase/renderer.c | 1 + 2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/strmbase/mediatype.c b/dlls/strmbase/mediatype.c index 91c0ddc..1ad4d3b 100644 --- a/dlls/strmbase/mediatype.c +++ b/dlls/strmbase/mediatype.c @@ -264,14 +264,17 @@ static HRESULT WINAPI IEnumMediaTypesImpl_Reset(IEnumMediaTypes * iface) CoTaskMemFree(This->enumMediaDetails.pMediaTypes);
i = 0; - while (This->enumMediaFunction(This->basePin, i, &amt) == S_OK) i++; + while (This->enumMediaFunction(This->basePin, i, &amt) == S_OK) + { + FreeMediaType(&amt); + i++; + }
This->enumMediaDetails.cMediaTypes = i; This->enumMediaDetails.pMediaTypes = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE) * i); for (i = 0; i < This->enumMediaDetails.cMediaTypes; i++) { - This->enumMediaFunction(This->basePin, i,&amt); - if (FAILED(CopyMediaType(&This->enumMediaDetails.pMediaTypes[i], &amt))) + if (FAILED(This->enumMediaFunction(This->basePin, i, &This->enumMediaDetails.pMediaTypes[i]))) { while (i--) FreeMediaType(&This->enumMediaDetails.pMediaTypes[i]); diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index c06661c..3d5e4b5 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -346,6 +346,7 @@ HRESULT WINAPI BaseRendererImpl_Receive(BaseRenderer *This, IMediaSample * pSamp { return VFW_E_TYPE_NOT_ACCEPTED; } + DeleteMediaType(pmt); }
This->pMediaSample = pSample;