strmbase: Use heap_alloc_zero() in enum_pins_create().

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2019-05-14 19:41:56 -05:00 committed by Alexandre Julliard
parent 2de9d9ec44
commit 51bce1ec8a
2 changed files with 18 additions and 18 deletions

View File

@ -39,36 +39,35 @@ static inline IEnumPinsImpl *impl_from_IEnumPins(IEnumPins *iface)
static const struct IEnumPinsVtbl IEnumPinsImpl_Vtbl; static const struct IEnumPinsVtbl IEnumPinsImpl_Vtbl;
HRESULT enum_pins_create(BaseFilter *base, IEnumPins **ppEnum) HRESULT enum_pins_create(BaseFilter *base, IEnumPins **out)
{ {
IEnumPinsImpl * pEnumPins; IEnumPinsImpl *object;
IPin *pin; IPin *pin;
if (!ppEnum) if (!out)
return E_POINTER; return E_POINTER;
pEnumPins = CoTaskMemAlloc(sizeof(IEnumPinsImpl)); if (!(object = heap_alloc_zero(sizeof(*object))))
if (!pEnumPins)
{ {
*ppEnum = NULL; *out = NULL;
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
} }
pEnumPins->IEnumPins_iface.lpVtbl = &IEnumPinsImpl_Vtbl;
pEnumPins->refCount = 1;
pEnumPins->uIndex = 0;
pEnumPins->base = base;
IBaseFilter_AddRef(&base->IBaseFilter_iface);
*ppEnum = &pEnumPins->IEnumPins_iface;
pEnumPins->Version = base->pin_version;
pEnumPins->count = 0;
while ((pin = base->pFuncsTable->pfnGetPin(base, pEnumPins->count))) object->IEnumPins_iface.lpVtbl = &IEnumPinsImpl_Vtbl;
object->refCount = 1;
object->base = base;
IBaseFilter_AddRef(&base->IBaseFilter_iface);
object->Version = base->pin_version;
while ((pin = base->pFuncsTable->pfnGetPin(base, object->count)))
{ {
IPin_Release(pin); IPin_Release(pin);
++pEnumPins->count; ++object->count;
} }
TRACE("Created new enumerator (%p)\n", *ppEnum); TRACE("Created enumerator %p.\n", object);
*out = &object->IEnumPins_iface;
return S_OK; return S_OK;
} }
@ -114,7 +113,7 @@ static ULONG WINAPI IEnumPinsImpl_Release(IEnumPins * iface)
if (!ref) if (!ref)
{ {
IBaseFilter_Release(&This->base->IBaseFilter_iface); IBaseFilter_Release(&This->base->IBaseFilter_iface);
CoTaskMemFree(This); heap_free(This);
} }
return ref; return ref;

View File

@ -28,6 +28,7 @@
#include "dshow.h" #include "dshow.h"
#include "uuids.h" #include "uuids.h"
#include "wine/debug.h" #include "wine/debug.h"
#include "wine/heap.h"
#include "wine/list.h" #include "wine/list.h"
#include "wine/strmbase.h" #include "wine/strmbase.h"
#include "wine/unicode.h" #include "wine/unicode.h"