From patchwork Tue Sep 15 07:40:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 22410 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 970A2449636 for ; Tue, 15 Sep 2020 10:44:39 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 821C068BCA7; Tue, 15 Sep 2020 10:41:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9AADB68BC8D for ; Tue, 15 Sep 2020 10:40:57 +0300 (EEST) Received: by mail-wm1-f67.google.com with SMTP id e17so2327248wme.0 for ; Tue, 15 Sep 2020 00:40:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4cs7XEKr/whOVE/IqAmfIyU4Jith1mY4x0YEXUmsH7s=; b=o4LlR7K+mrNmXROG1f9Wr/nu531mnRrGicBxULmUmUF0v8LdosPNXzoF/zhF4fVvJa Uk4h/U/AD5JA4/XMkFhVi/INXp+NIkSL8Qt69BOXTbS8PVZejm9A7Nf7fy6/fSHDt9rU PudoieOn08jRk6XakHtW8FjB5pPclBFQE2OIsb2UTbrNYkHOgdn243TYBFq90tmbbvhB SJku8D3Lj6pjpmpGfg2KAC2cWthEfP8M20DonM4ZWgQz6VJ2BsuTsUAFpTeYTfJqg8yC pVeCHiCOPpiId2WUvFO3/7l3dlh0tOpurl7VD/jkIJWtPXLi/f34ecV8i0sHDa6Vhij+ lVpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4cs7XEKr/whOVE/IqAmfIyU4Jith1mY4x0YEXUmsH7s=; b=UA3v/M0ctLMkTmIRLRgXHo/2wb5RbFkUFNCxZ5Svg7UM4EMep5DrbTDkuOuAU0WhUZ 0HGxf5yHazazw+V20EMtxdyMREgX0SINh5wMVO+lYpQX5HTWyAAxZ44HbTrW4vQNP0pm pPJ5+0JKjUKj7AljM7An5tDwT0xjsNHTtI+X3IXsQbv1l2z+Ty0cPdVKyOQZETyw2R+n Cwvp++pOy8qBg7aJLMf4xbshkG71wtc1mzgJ9FNMvXqaG6CRDcoaqws7GasQpw6ZU3Bz bTTeJzpQQdzc+T9JgOu+aVCEPDsgdp18IX0rlgieOkUQIOWZfWjvBpvjg/tbWWEJ0aSK N7rA== X-Gm-Message-State: AOAM53225CHGW45fPm71X/O6Nnw34KB5x2DEcbdsrXXuJvqd99sFLlCa sE5vEevZORTZBmd99POC0o70lMrOtD0= X-Google-Smtp-Source: ABdhPJxN+n4UHEmZQa2xmlq2YrMoSgyR0X6sW9hIaE6fG8wnxrXUQUs7SRwyJsnbmZrE5ATV6EMbOg== X-Received: by 2002:a7b:c255:: with SMTP id b21mr3150358wmj.17.1600155656867; Tue, 15 Sep 2020 00:40:56 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1fb0f.dynamic.kabel-deutschland.de. [188.193.251.15]) by smtp.gmail.com with ESMTPSA id d23sm6112125wmb.6.2020.09.15.00.40.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Sep 2020 00:40:56 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Sep 2020 09:40:00 +0200 Message-Id: <20200915074000.102622-30-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200915074000.102622-1-andreas.rheinhardt@gmail.com> References: <20200915074000.102622-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 30/30] avcodec/mpegaudiodec*: Cleanup generically on init failure X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegaudiodec_fixed.c | 1 + libavcodec/mpegaudiodec_float.c | 1 + libavcodec/mpegaudiodec_template.c | 9 ++------- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/libavcodec/mpegaudiodec_fixed.c b/libavcodec/mpegaudiodec_fixed.c index ad7ceb20b6..a2c433954b 100644 --- a/libavcodec/mpegaudiodec_fixed.c +++ b/libavcodec/mpegaudiodec_fixed.c @@ -116,5 +116,6 @@ AVCodec ff_mp3on4_decoder = { .flush = flush_mp3on4, .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_NONE }, + .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; #endif diff --git a/libavcodec/mpegaudiodec_float.c b/libavcodec/mpegaudiodec_float.c index 0defdf3af1..4aa52d4f53 100644 --- a/libavcodec/mpegaudiodec_float.c +++ b/libavcodec/mpegaudiodec_float.c @@ -116,5 +116,6 @@ AVCodec ff_mp3on4float_decoder = { .flush = flush_mp3on4, .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE }, + .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; #endif diff --git a/libavcodec/mpegaudiodec_template.c b/libavcodec/mpegaudiodec_template.c index 8ed2f74eee..68e6dbfdf8 100644 --- a/libavcodec/mpegaudiodec_template.c +++ b/libavcodec/mpegaudiodec_template.c @@ -1906,16 +1906,14 @@ static av_cold int decode_init_mp3on4(AVCodecContext * avctx) // Allocate zeroed memory for the decoder contexts s->mp3decctx = av_mallocz_array(sizeof(MPADecodeContext), s->frames); if (!s->mp3decctx) - goto alloc_fail; + return AVERROR(ENOMEM); // Put decoder context in place to make init_decode() happy avctx->priv_data = s->mp3decctx; ret = decode_init(avctx); // Restore mp3on4 context pointer avctx->priv_data = s; - if (ret < 0) { - decode_close_mp3on4(avctx); + if (ret < 0) return ret; - } s->mp3decctx[0].adu_mode = 1; // Set adu mode /* Create a separate codec/context for each frame (first is already ok). @@ -1929,9 +1927,6 @@ static av_cold int decode_init_mp3on4(AVCodecContext * avctx) } return 0; -alloc_fail: - decode_close_mp3on4(avctx); - return AVERROR(ENOMEM); }