@ -1033,16 +1033,17 @@ static int v4l2_get_device_list(AVFormatContext *ctx, AVDeviceInfoList *device_l
return ret ;
}
while ( ( entry = readdir ( dir ) ) ) {
int fd = - 1 ;
char device_name [ 256 ] ;
if ( ! v4l2_is_v4l_dev ( entry - > d_name ) )
continue ;
snprintf ( device_name , sizeof ( device_name ) , " /dev/%s " , entry - > d_name ) ;
if ( ( s - > fd = device_open ( ctx , device_name ) ) < 0 )
if ( ( fd = device_open ( ctx , device_name ) ) < 0 )
continue ;
if ( v4l2_ioctl ( s - > fd , VIDIOC_QUERYCAP , & cap ) < 0 ) {
if ( v4l2_ioctl ( fd , VIDIOC_QUERYCAP , & cap ) < 0 ) {
ret = AVERROR ( errno ) ;
av_log ( ctx , AV_LOG_ERROR , " ioctl(VIDIOC_QUERYCAP): %s \n " , av_err2str ( ret ) ) ;
goto fail ;
@ -1064,8 +1065,7 @@ static int v4l2_get_device_list(AVFormatContext *ctx, AVDeviceInfoList *device_l
& device_list - > nb_devices , device ) ) < 0 )
goto fail ;
v4l2_close ( s - > fd ) ;
s - > fd = - 1 ;
v4l2_close ( fd ) ;
continue ;
fail :
@ -1074,9 +1074,7 @@ static int v4l2_get_device_list(AVFormatContext *ctx, AVDeviceInfoList *device_l
av_freep ( & device - > device_description ) ;
av_freep ( & device ) ;
}
if ( s - > fd > = 0 )
v4l2_close ( s - > fd ) ;
s - > fd = - 1 ;
v4l2_close ( fd ) ;
break ;
}
closedir ( dir ) ;