diff options
author | Oliver Collyer <ovcollyer@mac.com> | 2019-01-03 10:41:12 +0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2019-01-03 19:15:45 +0300 |
commit | bf96937a961baeef75236ad0b986a1bb17906143 (patch) | |
tree | 1599b57f81d7e6adb9a225f0a2c72cfccfae109f /libavdevice/dshow.c | |
parent | 5402c1886b97a0c46e843b5ae0c08de74d2e6091 (diff) |
avdevice/dshow: Fixed some minor memory leaks
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavdevice/dshow.c')
-rw-r--r-- | libavdevice/dshow.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libavdevice/dshow.c b/libavdevice/dshow.c index 25481580af..d7f5bd7069 100644 --- a/libavdevice/dshow.c +++ b/libavdevice/dshow.c @@ -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; } |