[FFmpeg-devel] [PATCH 18/40] avcodec/alacenc: Don't free unnecessarily
Paul B Mahol
onemda at gmail.com
Mon Sep 14 19:32:37 EEST 2020
On Mon, Sep 14, 2020 at 07:27:25AM +0200, Andreas Rheinhardt wrote:
> The init function of the ALAC encoder calls its own close function
> if a call to ff_lpc_init() fails; yet nothing has been allocated before
> that point (except extradata which is freed generically) and ff_lpc_init()
> can be expected to clean up after itself on error (the documentation does
> not say anything to the contrary and the current implementation can only
> fail if the only allocation fails, so there is nothing to clean up on
> error anyway), so this is unnecessary.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
> libavcodec/alacenc.c | 20 ++++++--------------
> 1 file changed, 6 insertions(+), 14 deletions(-)
>
what about adding cleanup flag so if new stuff is added(unlikely) new bugs
wont pop up?
> diff --git a/libavcodec/alacenc.c b/libavcodec/alacenc.c
> index fc5fa270e6..9d135d1350 100644
> --- a/libavcodec/alacenc.c
> +++ b/libavcodec/alacenc.c
> @@ -535,10 +535,8 @@ static av_cold int alac_encode_init(AVCodecContext *avctx)
> avctx->bits_per_raw_sample);
>
> avctx->extradata = av_mallocz(ALAC_EXTRADATA_SIZE + AV_INPUT_BUFFER_PADDING_SIZE);
> - if (!avctx->extradata) {
> - ret = AVERROR(ENOMEM);
> - goto error;
> - }
> + if (!avctx->extradata)
> + return AVERROR(ENOMEM);
> avctx->extradata_size = ALAC_EXTRADATA_SIZE;
>
> alac_extradata = avctx->extradata;
> @@ -566,8 +564,7 @@ FF_DISABLE_DEPRECATION_WARNINGS
> avctx->min_prediction_order > ALAC_MAX_LPC_ORDER) {
> av_log(avctx, AV_LOG_ERROR, "invalid min prediction order: %d\n",
> avctx->min_prediction_order);
> - ret = AVERROR(EINVAL);
> - goto error;
> + return AVERROR(EINVAL);
> }
>
> s->min_prediction_order = avctx->min_prediction_order;
> @@ -578,8 +575,7 @@ FF_DISABLE_DEPRECATION_WARNINGS
> avctx->max_prediction_order > ALAC_MAX_LPC_ORDER) {
> av_log(avctx, AV_LOG_ERROR, "invalid max prediction order: %d\n",
> avctx->max_prediction_order);
> - ret = AVERROR(EINVAL);
> - goto error;
> + return AVERROR(EINVAL);
> }
>
> s->max_prediction_order = avctx->max_prediction_order;
> @@ -591,8 +587,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
> av_log(avctx, AV_LOG_ERROR,
> "invalid prediction orders: min=%d max=%d\n",
> s->min_prediction_order, s->max_prediction_order);
> - ret = AVERROR(EINVAL);
> - goto error;
> + return AVERROR(EINVAL);
> }
>
> s->avctx = avctx;
> @@ -600,13 +595,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
> if ((ret = ff_lpc_init(&s->lpc_ctx, avctx->frame_size,
> s->max_prediction_order,
> FF_LPC_TYPE_LEVINSON)) < 0) {
> - goto error;
> + return ret;
> }
>
> return 0;
> -error:
> - alac_encode_close(avctx);
> - return ret;
> }
>
> static int alac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
> --
> 2.25.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list