strmbase: Fully cleanup on initialization failure (Coverity).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b271a1acfa
commit
0c823e8369
|
@ -111,11 +111,11 @@ HRESULT WINAPI EnumMediaTypes_Construct(BasePin *basePin, BasePin_GetMediaType e
|
|||
IEnumMediaTypesImpl * pEnumMediaTypes = CoTaskMemAlloc(sizeof(IEnumMediaTypesImpl));
|
||||
AM_MEDIA_TYPE amt;
|
||||
|
||||
if (!pEnumMediaTypes)
|
||||
{
|
||||
*ppEnum = NULL;
|
||||
|
||||
if (!pEnumMediaTypes)
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
pEnumMediaTypes->IEnumMediaTypes_iface.lpVtbl = &IEnumMediaTypesImpl_Vtbl;
|
||||
pEnumMediaTypes->refCount = 1;
|
||||
pEnumMediaTypes->uIndex = 0;
|
||||
|
@ -129,14 +129,13 @@ HRESULT WINAPI EnumMediaTypes_Construct(BasePin *basePin, BasePin_GetMediaType e
|
|||
|
||||
pEnumMediaTypes->enumMediaDetails.cMediaTypes = i;
|
||||
pEnumMediaTypes->enumMediaDetails.pMediaTypes = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE) * i);
|
||||
memset(pEnumMediaTypes->enumMediaDetails.pMediaTypes, 0, sizeof(AM_MEDIA_TYPE) * i);
|
||||
for (i = 0; i < pEnumMediaTypes->enumMediaDetails.cMediaTypes; i++)
|
||||
{
|
||||
enumFunc(basePin,i,&amt);
|
||||
if (FAILED(CopyMediaType(&pEnumMediaTypes->enumMediaDetails.pMediaTypes[i], &amt)))
|
||||
{
|
||||
while (i--)
|
||||
FreeMediaType(&pEnumMediaTypes->enumMediaDetails.pMediaTypes[i]);
|
||||
CoTaskMemFree(pEnumMediaTypes->enumMediaDetails.pMediaTypes);
|
||||
IEnumMediaTypes_Release(&pEnumMediaTypes->IEnumMediaTypes_iface);
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue