avdevice/dshow: Fixed some minor memory leaks

Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
Oliver Collyer 2019-01-03 07:41:12 +00:00 committed by James Almer
parent 5402c1886b
commit bf96937a96
2 changed files with 22 additions and 4 deletions

View File

@ -278,12 +278,12 @@ dshow_cycle_devices(AVFormatContext *avctx, ICreateDevEnum *devenum,
goto fail1;
}
*device_unique_name = unique_name;
unique_name = NULL;
// success, loop will end now
}
} else {
av_log(avctx, AV_LOG_INFO, " \"%s\"\n", friendly_name);
av_log(avctx, AV_LOG_INFO, " Alternative name \"%s\"\n", unique_name);
av_free(unique_name);
}
fail1:
@ -291,7 +291,8 @@ fail1:
IMalloc_Free(co_malloc, olestr);
if (bind_ctx)
IBindCtx_Release(bind_ctx);
av_free(friendly_name);
av_freep(&friendly_name);
av_freep(&unique_name);
if (bag)
IPropertyBag_Release(bag);
IMoniker_Release(m);
@ -941,6 +942,8 @@ dshow_add_device(AVFormatContext *avctx,
AVStream *st;
int ret = AVERROR(EIO);
type.pbFormat = NULL;
st = avformat_new_stream(avctx, NULL);
if (!st) {
ret = AVERROR(ENOMEM);
@ -989,7 +992,8 @@ dshow_add_device(AVFormatContext *avctx,
if (par->codec_id == AV_CODEC_ID_NONE) {
av_log(avctx, AV_LOG_ERROR, "Unknown compression type. "
"Please report type 0x%X.\n", (int) bih->biCompression);
return AVERROR_PATCHWELCOME;
ret = AVERROR_PATCHWELCOME;
goto error;
}
par->bits_per_coded_sample = bih->biBitCount;
} else {
@ -1030,6 +1034,8 @@ dshow_add_device(AVFormatContext *avctx,
ret = 0;
error:
if (type.pbFormat)
CoTaskMemFree(type.pbFormat);
return ret;
}

View File

@ -249,8 +249,20 @@ libAVPin_Setup(libAVPin *this, libAVFilter *filter)
return 1;
}
static void
libAVPin_Free(libAVPin *this)
{
if (!this)
return;
av_freep(&this->imemvtbl);
if (this->type.pbFormat) {
CoTaskMemFree(this->type.pbFormat);
this->type.pbFormat = NULL;
}
}
DECLARE_CREATE(libAVPin, libAVPin_Setup(this, filter), libAVFilter *filter)
DECLARE_DESTROY(libAVPin, nothing)
DECLARE_DESTROY(libAVPin, libAVPin_Free)
/*****************************************************************************
* libAVMemInputPin