aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarvin Scholz <epirat07@gmail.com>2025-06-26 23:49:06 +0200
committerMarvin Scholz <epirat07@gmail.com>2025-06-28 15:16:45 +0200
commit7d384869751b45d4d057df67dde9050a82590a6e (patch)
treee7c6623c25e490e04ff63eda846f8cca590973a7
parent6e8bd5dd2588f892cde308022a8a1e6ee82b9fa0 (diff)
downloadffmpeg-7d384869751b45d4d057df67dde9050a82590a6e.tar.gz
avcodec/vvc/refs: remove early return
The ret value is checked later on again, so this check is redundant and would cause the frame to not be unrefd on failure as well. So remove this check and add one before av_frame_remove_side_data to ensure it is not called with an invalid frame. Fix CID 1648350 Reviewed-by: Frank Plowman <post@frankplowman.com>
-rw-r--r--libavcodec/vvc/refs.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/libavcodec/vvc/refs.c b/libavcodec/vvc/refs.c
index 79967b77d3..1840caa4ec 100644
--- a/libavcodec/vvc/refs.c
+++ b/libavcodec/vvc/refs.c
@@ -300,16 +300,15 @@ int ff_vvc_output_frame(VVCContext *s, VVCFrameContext *fc, AVFrame *out, const
frame->frame->flags |= AV_FRAME_FLAG_CORRUPT;
ret = av_frame_ref(out, frame->needs_fg ? frame->frame_grain : frame->frame);
- if (ret < 0)
- return ret;
- if (!(s->avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN))
+ if (!ret && !(s->avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN))
av_frame_remove_side_data(out, AV_FRAME_DATA_FILM_GRAIN_PARAMS);
if (frame->flags & VVC_FRAME_FLAG_BUMPING)
ff_vvc_unref_frame(fc, frame, VVC_FRAME_FLAG_OUTPUT | VVC_FRAME_FLAG_BUMPING);
else
ff_vvc_unref_frame(fc, frame, VVC_FRAME_FLAG_OUTPUT);
+
if (ret < 0)
return ret;