[FFmpeg-devel] [PATCH 5/5] avcodec/utils: simplify, remove duplicate code
lance.lmwang at gmail.com
lance.lmwang at gmail.com
Thu Apr 30 16:28:06 EEST 2020
On Thu, Apr 30, 2020 at 03:18:15PM +0200, Andreas Rheinhardt wrote:
> lance.lmwang at gmail.com:
> > From: Limin Wang <lance.lmwang at gmail.com>
> >
> > Signed-off-by: Limin Wang <lance.lmwang at gmail.com>
> > ---
> > libavcodec/utils.c | 29 +++--------------------------
> > 1 file changed, 3 insertions(+), 26 deletions(-)
> >
> > diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> > index e77090daef..91b271a717 100644
> > --- a/libavcodec/utils.c
> > +++ b/libavcodec/utils.c
> > @@ -584,37 +584,14 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
> > avctx->internal = avci;
> >
> > avci->to_free = av_frame_alloc();
> > - if (!avci->to_free) {
> > - ret = AVERROR(ENOMEM);
> > - goto free_and_end;
> > - }
> > -
> > avci->compat_decode_frame = av_frame_alloc();
> > - if (!avci->compat_decode_frame) {
> > - ret = AVERROR(ENOMEM);
> > - goto free_and_end;
> > - }
> > -
> > avci->buffer_frame = av_frame_alloc();
> > - if (!avci->buffer_frame) {
> > - ret = AVERROR(ENOMEM);
> > - goto free_and_end;
> > - }
> > -
> > avci->buffer_pkt = av_packet_alloc();
> > - if (!avci->buffer_pkt) {
> > - ret = AVERROR(ENOMEM);
> > - goto free_and_end;
> > - }
> > -
> > avci->ds.in_pkt = av_packet_alloc();
> > - if (!avci->ds.in_pkt) {
> > - ret = AVERROR(ENOMEM);
> > - goto free_and_end;
> > - }
> > -
> > avci->last_pkt_props = av_packet_alloc();
> > - if (!avci->last_pkt_props) {
> > + if (!avci->to_free || !avci->compat_decode_frame ||
> > + !avci->buffer_frame || !avci->buffer_pkt ||
> > + !avci->ds.in_pkt || !avci->last_pkt_props) {
> > ret = AVERROR(ENOMEM);
> > goto free_and_end;
> > }
> >
> If you write this in the following way
>
> if (!(avci->to_free = av_frame_alloc()) ||
> !(avci->compat_decode_frame = av_frame_alloc()) || ...) {
> ret = AVERROR(ENOMEM);
> goto free_and_end;
> }
>
> then shortcircuit evaluation will make sure that an error is detected
> immediately (like now), but without the code duplication.
Yeah, it's better, I'll update it.
>
> - Andreas
> _______________________________________________
> 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".
--
Thanks,
Limin Wang
More information about the ffmpeg-devel
mailing list