diff --git a/libavformat/paf.c b/libavformat/paf.c index f48b2e60cd..2d2d7f8dd8 100644 --- a/libavformat/paf.c +++ b/libavformat/paf.c @@ -172,22 +172,20 @@ static int read_header(AVFormatContext *s) !p->blocks_offset_table || !p->video_frame || !p->audio_frame || - !p->temp_audio_frame) { - ret = AVERROR(ENOMEM); - goto fail; - } + !p->temp_audio_frame) + return AVERROR(ENOMEM); avio_seek(pb, p->buffer_size, SEEK_SET); ret = read_table(s, p->blocks_count_table, p->nb_frames); if (ret < 0) - goto fail; + return ret; ret = read_table(s, p->frames_offset_table, p->nb_frames); if (ret < 0) - goto fail; + return ret; ret = read_table(s, p->blocks_offset_table, p->frame_blks); if (ret < 0) - goto fail; + return ret; p->got_audio = 0; p->current_frame = 0; @@ -196,11 +194,6 @@ static int read_header(AVFormatContext *s) avio_seek(pb, p->start_offset, SEEK_SET); return 0; - -fail: - read_close(s); - - return ret; } static int read_packet(AVFormatContext *s, AVPacket *pkt) @@ -275,6 +268,7 @@ const AVInputFormat ff_paf_demuxer = { .name = "paf", .long_name = NULL_IF_CONFIG_SMALL("Amazing Studio Packed Animation File"), .priv_data_size = sizeof(PAFDemuxContext), + .flags_internal = FF_FMT_INIT_CLEANUP, .read_probe = read_probe, .read_header = read_header, .read_packet = read_packet,