[FFmpeg-cvslog] lavd/avdevice: always free detected devices on error
Lukasz Marek
git at videolan.org
Thu Mar 6 02:09:19 CET 2014
ffmpeg | branch: master | Lukasz Marek <lukasz.m.luki at gmail.com> | Tue Mar 4 02:57:27 2014 +0100| [2475fdbd047d8956b03f1bfb1e3f896985fd8c7f] | committer: Lukasz Marek
lavd/avdevice: always free detected devices on error
Signed-off-by: Lukasz Marek <lukasz.m.luki at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2475fdbd047d8956b03f1bfb1e3f896985fd8c7f
---
libavdevice/avdevice.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/libavdevice/avdevice.c b/libavdevice/avdevice.c
index 8964b96..ea14c7a 100644
--- a/libavdevice/avdevice.c
+++ b/libavdevice/avdevice.c
@@ -101,6 +101,7 @@ int avdevice_dev_to_app_control_message(struct AVFormatContext *s, enum AVDevToA
int avdevice_list_devices(AVFormatContext *s, AVDeviceInfoList **device_list)
{
+ int ret;
av_assert0(s);
av_assert0(device_list);
av_assert0(s->oformat || s->iformat);
@@ -113,8 +114,12 @@ int avdevice_list_devices(AVFormatContext *s, AVDeviceInfoList **device_list)
if (!(*device_list))
return AVERROR(ENOMEM);
if (s->oformat)
- return s->oformat->get_device_list(s, *device_list);
- return s->iformat->get_device_list(s, *device_list);
+ ret = s->oformat->get_device_list(s, *device_list);
+ else
+ ret = s->iformat->get_device_list(s, *device_list);
+ if (ret < 0)
+ avdevice_free_list_devices(device_list);
+ return ret;
}
void avdevice_free_list_devices(AVDeviceInfoList **device_list)
More information about the ffmpeg-cvslog
mailing list