You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
avformat/img2enc: cleanup IO contexts on error
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
@@ -124,7 +124,7 @@ static int write_packet_pipe(AVFormatContext *s, AVPacket *pkt)
|
|||||||
static int write_packet(AVFormatContext *s, AVPacket *pkt)
|
static int write_packet(AVFormatContext *s, AVPacket *pkt)
|
||||||
{
|
{
|
||||||
VideoMuxData *img = s->priv_data;
|
VideoMuxData *img = s->priv_data;
|
||||||
AVIOContext *pb[4];
|
AVIOContext *pb[4] = {0};
|
||||||
char filename[1024];
|
char filename[1024];
|
||||||
AVCodecParameters *par = s->streams[pkt->stream_index]->codecpar;
|
AVCodecParameters *par = s->streams[pkt->stream_index]->codecpar;
|
||||||
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(par->format);
|
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(par->format);
|
||||||
@@ -162,7 +162,8 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
av_strlcpy(img->target[i], filename, sizeof(img->target[i]));
|
av_strlcpy(img->target[i], filename, sizeof(img->target[i]));
|
||||||
if (s->io_open(s, &pb[i], img->use_rename ? img->tmp[i] : filename, AVIO_FLAG_WRITE, NULL) < 0) {
|
if (s->io_open(s, &pb[i], img->use_rename ? img->tmp[i] : filename, AVIO_FLAG_WRITE, NULL) < 0) {
|
||||||
av_log(s, AV_LOG_ERROR, "Could not open file : %s\n", img->use_rename ? img->tmp[i] : filename);
|
av_log(s, AV_LOG_ERROR, "Could not open file : %s\n", img->use_rename ? img->tmp[i] : filename);
|
||||||
return AVERROR(EIO);
|
ret = AVERROR(EIO);
|
||||||
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!img->split_planes || i+1 >= desc->nb_components)
|
if (!img->split_planes || i+1 >= desc->nb_components)
|
||||||
@@ -191,7 +192,7 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
} else if (img->muxer) {
|
} else if (img->muxer) {
|
||||||
ret = write_muxed_file(s, pb[0], pkt);
|
ret = write_muxed_file(s, pb[0], pkt);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
goto fail;
|
||||||
} else {
|
} else {
|
||||||
avio_write(pb[0], pkt->data, pkt->size);
|
avio_write(pb[0], pkt->data, pkt->size);
|
||||||
}
|
}
|
||||||
@@ -205,6 +206,12 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
|
|
||||||
img->img_number++;
|
img->img_number++;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
for (i = 0; i < FF_ARRAY_ELEMS(pb); i++)
|
||||||
|
if (pb[i])
|
||||||
|
ff_format_io_close(s, &pb[i]);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int query_codec(enum AVCodecID id, int std_compliance)
|
static int query_codec(enum AVCodecID id, int std_compliance)
|
||||||
|
Reference in New Issue
Block a user