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));
|
IEnumMediaTypesImpl * pEnumMediaTypes = CoTaskMemAlloc(sizeof(IEnumMediaTypesImpl));
|
||||||
AM_MEDIA_TYPE amt;
|
AM_MEDIA_TYPE amt;
|
||||||
|
|
||||||
if (!pEnumMediaTypes)
|
|
||||||
{
|
|
||||||
*ppEnum = NULL;
|
*ppEnum = NULL;
|
||||||
|
|
||||||
|
if (!pEnumMediaTypes)
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
|
||||||
pEnumMediaTypes->IEnumMediaTypes_iface.lpVtbl = &IEnumMediaTypesImpl_Vtbl;
|
pEnumMediaTypes->IEnumMediaTypes_iface.lpVtbl = &IEnumMediaTypesImpl_Vtbl;
|
||||||
pEnumMediaTypes->refCount = 1;
|
pEnumMediaTypes->refCount = 1;
|
||||||
pEnumMediaTypes->uIndex = 0;
|
pEnumMediaTypes->uIndex = 0;
|
||||||
|
@ -129,14 +129,13 @@ HRESULT WINAPI EnumMediaTypes_Construct(BasePin *basePin, BasePin_GetMediaType e
|
||||||
|
|
||||||
pEnumMediaTypes->enumMediaDetails.cMediaTypes = i;
|
pEnumMediaTypes->enumMediaDetails.cMediaTypes = i;
|
||||||
pEnumMediaTypes->enumMediaDetails.pMediaTypes = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE) * 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++)
|
for (i = 0; i < pEnumMediaTypes->enumMediaDetails.cMediaTypes; i++)
|
||||||
{
|
{
|
||||||
enumFunc(basePin,i,&amt);
|
enumFunc(basePin,i,&amt);
|
||||||
if (FAILED(CopyMediaType(&pEnumMediaTypes->enumMediaDetails.pMediaTypes[i], &amt)))
|
if (FAILED(CopyMediaType(&pEnumMediaTypes->enumMediaDetails.pMediaTypes[i], &amt)))
|
||||||
{
|
{
|
||||||
while (i--)
|
IEnumMediaTypes_Release(&pEnumMediaTypes->IEnumMediaTypes_iface);
|
||||||
FreeMediaType(&pEnumMediaTypes->enumMediaDetails.pMediaTypes[i]);
|
|
||||||
CoTaskMemFree(pEnumMediaTypes->enumMediaDetails.pMediaTypes);
|
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue