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.rheinha...@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@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".