[FFmpeg-cvslog] avcodec/pngdec: Cleanup generically on init failure

Andreas Rheinhardt git at videolan.org
Fri Feb 11 08:21:07 EET 2022


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Tue Feb  8 11:03:52 2022 +0100| [10e520f1f147a4284c3d8d61109da12901281590] | committer: Andreas Rheinhardt

avcodec/pngdec: Cleanup generically on init failure

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=10e520f1f147a4284c3d8d61109da12901281590
---

 libavcodec/pngdec.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index 7571def907..39bb652f67 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -1698,11 +1698,8 @@ static av_cold int png_dec_init(AVCodecContext *avctx)
     s->avctx = avctx;
     s->last_picture.f = av_frame_alloc();
     s->picture.f = av_frame_alloc();
-    if (!s->last_picture.f || !s->picture.f) {
-        av_frame_free(&s->last_picture.f);
-        av_frame_free(&s->picture.f);
+    if (!s->last_picture.f || !s->picture.f)
         return AVERROR(ENOMEM);
-    }
 
     ff_pngdsp_init(&s->dsp);
 
@@ -1743,7 +1740,7 @@ const AVCodec ff_apng_decoder = {
     .decode         = decode_frame_apng,
     .update_thread_context = ONLY_IF_THREADS_ENABLED(update_thread_context),
     .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS /*| AV_CODEC_CAP_DRAW_HORIZ_BAND*/,
-    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE |
+    .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP |
                       FF_CODEC_CAP_ALLOCATE_PROGRESS,
 };
 #endif
@@ -1761,6 +1758,6 @@ const AVCodec ff_png_decoder = {
     .update_thread_context = ONLY_IF_THREADS_ENABLED(update_thread_context),
     .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS /*| AV_CODEC_CAP_DRAW_HORIZ_BAND*/,
     .caps_internal  = FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM | FF_CODEC_CAP_INIT_THREADSAFE |
-                      FF_CODEC_CAP_ALLOCATE_PROGRESS,
+                      FF_CODEC_CAP_ALLOCATE_PROGRESS | FF_CODEC_CAP_INIT_CLEANUP,
 };
 #endif



More information about the ffmpeg-cvslog mailing list