@@ -124,14 +124,15 @@ void ff_dshow_##prefix##_Destroy(class *this) \
class *ff_dshow_##prefix##_Create(__VA_ARGS__) \
{ \
class *this = CoTaskMemAlloc(sizeof(class)); \
- void *vtbl = CoTaskMemAlloc(sizeof(*this->vtbl)); \
dshowdebug("ff_dshow_"AV_STRINGIFY(prefix)"_Create(%p)\n", this); \
- if (!this || !vtbl) \
+ if (!this) \
goto fail; \
ZeroMemory(this, sizeof(class)); \
- ZeroMemory(vtbl, sizeof(*this->vtbl)); \
+ this->vtbl = CoTaskMemAlloc(sizeof(*this->vtbl)); \
+ if (!this->vtbl) \
+ goto fail; \
+ ZeroMemory(this->vtbl, sizeof(*this->vtbl)); \
this->ref = 1; \
- this->vtbl = vtbl; \
if (!setup) \
goto fail; \
dshowdebug("created ff_dshow_"AV_STRINGIFY(prefix)" %p\n", this); \
Untested, needs review Fixes: CID1591856 Resource leak Fixes: CID1591887 Resource leak Fixes: CID1591874 Resource leak Sponsored-by: Sovereign Tech Fund Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavdevice/dshow_capture.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)