PR #23114 opened by Leo Izen (Traneptora) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23114 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23114.patch
You may look and think `AVFMT_FLAG_CUSTOM_IO` check is enough, but this is not what it seems. This flag means that user provided custom AVIOContext, before creating AVFormatContext and it should not be closed. However nested sub-demuxers may still open an temporary io, and those have to be closed and use correct io_close2 function. You can see 0dcac9c3f0f8f32009098edb704fac4b08bac951 and ef01061225088c4945f5e309bc695ea5beb2a867 where this flag is cleared for nested opens to avoid leaking those. lavf micro version bumped so API users can know if it is safe to use custom io. Signed-off-by: Kacper Michajłow <[email protected]> From 256a70075e022157ab1b661d537d6668ea933d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <[email protected]> Date: Tue, 12 May 2026 13:57:09 +0200 Subject: [PATCH] avformat/demux: use correct close function for custom io MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit You may look and think `AVFMT_FLAG_CUSTOM_IO` check is enough, but this is not what it seems. This flag means that user provided custom AVIOContext, before creating AVFormatContext and it should not be closed. However nested sub-demuxers may still open an temporary io, and those have to be closed and use correct io_close2 function. You can see 0dcac9c3f0f8f32009098edb704fac4b08bac951 and ef01061225088c4945f5e309bc695ea5beb2a867 where this flag is cleared for nested opens to avoid leaking those. lavf micro version bumped so API users can know if it is safe to use custom io. Signed-off-by: Kacper Michajłow <[email protected]> --- libavformat/demux.c | 2 +- libavformat/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libavformat/demux.c b/libavformat/demux.c index 5027b84206..614efbf250 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -353,7 +353,7 @@ fail: ff_id3v2_free_extra_meta(&id3v2_extra_meta); av_dict_free(&tmp); if (s->pb && !(s->flags & AVFMT_FLAG_CUSTOM_IO)) - avio_closep(&s->pb); + ff_format_io_close(s, &s->pb); avformat_free_context(s); *ps = NULL; return ret; diff --git a/libavformat/version.h b/libavformat/version.h index b3c03a373b..36ccf6ecff 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -32,7 +32,7 @@ #include "version_major.h" #define LIBAVFORMAT_VERSION_MINOR 1 -#define LIBAVFORMAT_VERSION_MICRO 102 +#define LIBAVFORMAT_VERSION_MICRO 103 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \ -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
