From b9dc3324d7aa3397aa71e108e3e1fb5491eee525 Mon Sep 17 00:00:00 2001 From: Akihiro Sagawa Date: Wed, 20 May 2020 23:36:01 +0900 Subject: [PATCH] strmbase: Allow NULL pin_get_media_type() callback in source_Connect(). Signed-off-by: Akihiro Sagawa Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- dlls/strmbase/pin.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/dlls/strmbase/pin.c b/dlls/strmbase/pin.c index b5f8092e9e3..eab7c0cb2e4 100644 --- a/dlls/strmbase/pin.c +++ b/dlls/strmbase/pin.c @@ -516,17 +516,20 @@ static HRESULT WINAPI source_Connect(IPin *iface, IPin *peer, const AM_MEDIA_TYP return hr; } - for (i = 0; pin->pFuncsTable->base.pin_get_media_type(&pin->pin, i, &candidate) == S_OK; ++i) + if (pin->pFuncsTable->base.pin_get_media_type) { - strmbase_dump_media_type(&candidate); - if (compare_media_types(mt, &candidate) - && pin->pFuncsTable->pfnAttemptConnection(pin, peer, &candidate) == S_OK) + for (i = 0; pin->pFuncsTable->base.pin_get_media_type(&pin->pin, i, &candidate) == S_OK; ++i) { - LeaveCriticalSection(&pin->pin.filter->csFilter); + strmbase_dump_media_type(&candidate); + if (compare_media_types(mt, &candidate) + && pin->pFuncsTable->pfnAttemptConnection(pin, peer, &candidate) == S_OK) + { + LeaveCriticalSection(&pin->pin.filter->csFilter); + FreeMediaType(&candidate); + return S_OK; + } FreeMediaType(&candidate); - return S_OK; } - FreeMediaType(&candidate); } if (SUCCEEDED(IPin_EnumMediaTypes(peer, &enummt)))