PR #24785 opened by ffmpeg-devel URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24785 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24785.patch
**Backport:** https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24665 So far, if an avformats write_trailer call returned a positive value instead of 0, like for example movenc does for the number of bytes written, it would hide any pb context failures. This adjusts the check to expect positive return values, and only overwrites them with the pb error if it actually had an error, to preserve the return value in case something came to rely on it. >From eb4d7e3c3074740fe8201f1227df774ba12a4d9a Mon Sep 17 00:00:00 2001 From: Timo Rothenpieler <[email protected]> Date: Thu, 24 Sep 2026 14:21:41 +0200 Subject: [PATCH] avformat/mux: don't let positive write_trailer ret shadow pb failure (cherry picked from commit 1de217ad4b98163b7f5a372853b1c943ed6f070d) --- libavformat/avformat.h | 2 +- libavformat/mux.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index ee0ddddf8d..2e68e47929 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -2667,7 +2667,7 @@ int av_write_uncoded_frame_query(AVFormatContext *s, int stream_index); * May only be called after a successful call to avformat_write_header. * * @param s media file handle - * @return 0 if OK, AVERROR_xxx on error + * @return >=0 if OK, AVERROR_xxx on error */ int av_write_trailer(AVFormatContext *s); diff --git a/libavformat/mux.c b/libavformat/mux.c index db3b6c2bfe..4a68c19f60 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -1268,8 +1268,8 @@ int av_write_trailer(AVFormatContext *s) if (s->pb) avio_flush(s->pb); - if (ret == 0) - ret = s->pb ? s->pb->error : 0; + if (ret >= 0 && s->pb && s->pb->error < 0) + ret = s->pb->error; for (unsigned i = 0; i < s->nb_streams; i++) { av_freep(&s->streams[i]->priv_data); av_freep(&ffstream(s->streams[i])->index_entries); -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
