From patchwork Mon Nov 30 00:54:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24214 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp3212553ybf; Sun, 29 Nov 2020 16:59:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJwM2ORjydeblBUmaY3K3+KmGB7b/1oOQ/d+XvZPYtD5E+PDGXEhk7+c4276gzxf796fC5AR X-Received: by 2002:adf:bc13:: with SMTP id s19mr25344712wrg.397.1606697958438; Sun, 29 Nov 2020 16:59:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606697958; cv=none; d=google.com; s=arc-20160816; b=ydcVHMA23/HCEMchSv+tsd/ZBsBbZ1D0AYloS9i7evIQX4kHPKi6BYD+Y0JNkR8fmW t3V8bIm1W+v1L/SjBmM3lpTZiL3otIDDq73snBC8LDLJiw51r5NElZOIz8r90ySuTYNI 4ybh7hv+jQqu/nMGcX0urSsDXJ54zxn6YmJxT5qFXgmoL2Wp82gIPV0XEbNKIIv1J2bG 5pEl0AhazxlFKOjfD8h7BbElT3YP4JJnEqrwcFgzX2bE/0XyCg2WIeWqXPtM4TXETTnW +33QoZMjSsDe9mcighcvhCR4uDg3aTjQkOLE9CSiKQIMmhYr3CsczMTLl0/1jB3dnTzs Nxdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=OsA3QaBWcde7gJZcCpPviL4c7bAALrQs0zmAO0GWmvs=; b=J1DXT0Ic2GyHyZOOYgpbG+gD3Nft6Ub9gwloToK+qnIiqEoRJKRKhR87OHsIeGeDuw vwhguyhv/3S2TewP4qg4jjf57wEMrFPJS7LMWDjR/Ah9GywSx7XT7skM19CKcuib97c8 tsc2Dn4pzGNXEvcmt7MfKlqogu3/yCwzZu+Gb4Go5Q2R7SUAoLNqru29wGz8PBP3hru9 vU3fcYwDTzQtiZ2JA1rpSCsytsl55iX7lw/fZY33vQjBJnQKm2ExFGPjVEjGCUpgh13U 9HYcKavXa/UNyW/USTURl74n9dQaGhm2dq8C9/HYXIFXTkKtFRVf7nuy/g2ai8bYBBnJ bTOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=c+GOFW+W; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j8si15199506wrr.303.2020.11.29.16.59.18; Sun, 29 Nov 2020 16:59:18 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=c+GOFW+W; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E7E7D689C64; Mon, 30 Nov 2020 02:56:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C08D3688398 for ; Mon, 30 Nov 2020 02:55:46 +0200 (EET) Received: by mail-ej1-f52.google.com with SMTP id qw4so7924220ejb.12 for ; Sun, 29 Nov 2020 16:55:46 -0800 (PST) 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:reply-to :mime-version:content-transfer-encoding; bh=RlRYgTiJ/pK3cV0pd1K9mbVMnP3gq/Fwe1vd4ZONNTo=; b=c+GOFW+WP2QGoU/KeqEuLBXkl3cOd5/z5IMHoPnakNh1yAC7a+FfBpIqHS7pnkzWFU nc3QG0awkMcZI3S580v7EE23SjlomVQdsEb0SJfKZNQ91fSdusRxQCCQpIL4UbQYBlpY FIiTqPv6o61NqZEua4RC25D7D0bpUAic45/JSAE2iZ0fWodk4IcdQQ+M2uvcheLCJTfz lgAmBgYhM5pGJ2z8kJv4goppjpXtlsZFeCGJgdxWRg80zS+EJiR/KbjpkxLct2Y8nJfS wjlQhWV9OmCggeLz0nfQZWrtGLXFkR4sPSZYU8DSK5Yz5n+JlTgsg51MJActYnif/UZn 9+0w== 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:reply-to:mime-version:content-transfer-encoding; bh=RlRYgTiJ/pK3cV0pd1K9mbVMnP3gq/Fwe1vd4ZONNTo=; b=hg5hA8l5/cZv37k3O+YKPshLHsgYJpPJcF+oFxyxqiqw7PQaTWhME5nbhNpyC6C+gb klEV7cx0LUPiEHFrnY19H8PfDIBCnOND3oWkAk6jD3HgQrZdpqgezfVMR001H9tTzm+G UPR79n7QRj6389e4kRFG+CIY5XnPJwgtOqLlg9sgbw8E8SzyMe6n/4LC4qTc4Bp9ZgbX 6gL8iTkzL4yn7OXa04hS42/3AWFbp3k7cYAvPkcRHTDqwesgdG18MFHUuJmaqNUwiTpx qUCvOQvRxF/Z5fNA4nCp8OwxmtI4qLBfQ4P2wuc5DRGjJ5G9tjloyR2LFi0vhYCzFqY+ 6bgQ== X-Gm-Message-State: AOAM530as3z+PseXlgE08MYX8iwKpRhnmgBUBR/o2X+B2HiLwIO2on76 wS5uIIGdnbIt5BaLV0hB7q8dHlsx8yNDnA== X-Received: by 2002:a17:906:7104:: with SMTP id x4mr5831703ejj.141.1606697746015; Sun, 29 Nov 2020 16:55:46 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id b20sm3354993eja.30.2020.11.29.16.55.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 29 Nov 2020 16:55:45 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 30 Nov 2020 01:54:16 +0100 Message-Id: <20201130005454.110441-24-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201127010249.2724610-1-andreas.rheinhardt@gmail.com> References: <20201127010249.2724610-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 096/134] avcodec/huffyuvdec: 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" X-TUID: icUqpSakypRk Content-Length: 5439 Signed-off-by: Andreas Rheinhardt --- libavcodec/huffyuvdec.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/libavcodec/huffyuvdec.c b/libavcodec/huffyuvdec.c index e713b91e4d..16547b2b7f 100644 --- a/libavcodec/huffyuvdec.c +++ b/libavcodec/huffyuvdec.c @@ -36,6 +36,7 @@ #include "get_bits.h" #include "huffyuv.h" #include "huffyuvdsp.h" +#include "internal.h" #include "lossless_videodsp.h" #include "thread.h" #include "libavutil/imgutils.h" @@ -348,7 +349,7 @@ static av_cold int decode_init(AVCodecContext *avctx) if ((ret = read_huffman_tables(s, avctx->extradata + 4, avctx->extradata_size - 4)) < 0) - goto error; + return ret; } else { switch (avctx->bits_per_coded_sample & 7) { case 1: @@ -376,7 +377,7 @@ static av_cold int decode_init(AVCodecContext *avctx) s->context = 0; if ((ret = read_old_huffman_tables(s)) < 0) - goto error; + return ret; } if (s->version <= 2) { @@ -404,8 +405,7 @@ static av_cold int decode_init(AVCodecContext *avctx) s->alpha = 1; break; default: - ret = AVERROR_INVALIDDATA; - goto error; + return AVERROR_INVALIDDATA; } av_pix_fmt_get_chroma_sub_sample(avctx->pix_fmt, &s->chroma_h_shift, @@ -539,8 +539,7 @@ static av_cold int decode_init(AVCodecContext *avctx) avctx->pix_fmt = AV_PIX_FMT_YUVA420P16; break; default: - ret = AVERROR_INVALIDDATA; - goto error; + return AVERROR_INVALIDDATA; } } @@ -548,26 +547,19 @@ static av_cold int decode_init(AVCodecContext *avctx) if ((avctx->pix_fmt == AV_PIX_FMT_YUV422P || avctx->pix_fmt == AV_PIX_FMT_YUV420P) && avctx->width & 1) { av_log(avctx, AV_LOG_ERROR, "width must be even for this colorspace\n"); - ret = AVERROR_INVALIDDATA; - goto error; + return AVERROR_INVALIDDATA; } if (s->predictor == MEDIAN && avctx->pix_fmt == AV_PIX_FMT_YUV422P && avctx->width % 4) { av_log(avctx, AV_LOG_ERROR, "width must be a multiple of 4 " "for this combination of colorspace and predictor type.\n"); - ret = AVERROR_INVALIDDATA; - goto error; + return AVERROR_INVALIDDATA; } - if ((ret = ff_huffyuv_alloc_temp(s)) < 0) { - ff_huffyuv_common_end(s); - goto error; - } + if ((ret = ff_huffyuv_alloc_temp(s)) < 0) + return ret; return 0; - error: - decode_end(avctx); - return ret; } /** Subset of GET_VLC for use in hand-roller VLC code */ @@ -1281,6 +1273,7 @@ AVCodec ff_huffyuv_decoder = { .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DRAW_HORIZ_BAND | AV_CODEC_CAP_FRAME_THREADS, + .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; #if CONFIG_FFVHUFF_DECODER @@ -1295,6 +1288,7 @@ AVCodec ff_ffvhuff_decoder = { .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DRAW_HORIZ_BAND | AV_CODEC_CAP_FRAME_THREADS, + .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; #endif /* CONFIG_FFVHUFF_DECODER */ @@ -1310,5 +1304,6 @@ AVCodec ff_hymt_decoder = { .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DRAW_HORIZ_BAND | AV_CODEC_CAP_FRAME_THREADS, + .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; #endif /* CONFIG_HYMT_DECODER */