PR #23638 opened by Jan Ekström (jeeb)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23638
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23638.patch

It's not valid to call avio_close() on context that has not been open
with avio_open().

This fixes use of custom IO. (io_open / io_close2 callbacks)

Note that by default io_close2 is set to io_close2_default() which calls
avio_close(), so default case will work the same as before.

Signed-off-by: Kacper Michajłow <[email protected]>
Reviewed-by: Andreas Rheinhardt <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 1a7e802c8f970e76807f08c3d3fb3513ae5a4882)

# Summary of changes

Briefly describe what this PR does and why.

<!--
If this PR requires new FATE test samples, attach them to the PR and
list their target paths below (relative to the fate-suite root).

Attached filenames must match the sample's filename:

```fate-samples
# e.g. vorbis/new-sample.ogg
```
-->



From f814e6bd2ac0d1b487849d44c1d6ec6dd58e2dbd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <[email protected]>
Date: Sat, 17 May 2025 05:50:28 +0200
Subject: [PATCH] avformat/demux: use io_close2 when closing avfromat
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It's not valid to call avio_close() on context that has not been open
with avio_open().

This fixes use of custom IO. (io_open / io_close2 callbacks)

Note that by default io_close2 is set to io_close2_default() which calls
avio_close(), so default case will work the same as before.

Signed-off-by: Kacper Michajłow <[email protected]>
Reviewed-by: Andreas Rheinhardt <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 1a7e802c8f970e76807f08c3d3fb3513ae5a4882)
---
 libavformat/demux.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/libavformat/demux.c b/libavformat/demux.c
index 60f491e550..2fc6c211cc 100644
--- a/libavformat/demux.c
+++ b/libavformat/demux.c
@@ -390,11 +390,10 @@ void avformat_close_input(AVFormatContext **ps)
         if (s->iformat->read_close)
             s->iformat->read_close(s);
 
+    ff_format_io_close(s, &pb);
     avformat_free_context(s);
 
     *ps = NULL;
-
-    avio_close(pb);
 }
 
 static void force_codec_ids(AVFormatContext *s, AVStream *st)
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to