lance.lmw...@gmail.com:
> From: Limin Wang <lance.lmw...@gmail.com>
> 
> Signed-off-by: Limin Wang <lance.lmw...@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.

- Andreas
_______________________________________________
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".

Reply via email to