On 08/24/2012 04:30 PM, Justin Ruggles wrote:
> Ensure that padded_frame is freed before returning when needed.
> ---
>  libavcodec/utils.c |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> index b5b0466..4fffca8 100644
> --- a/libavcodec/utils.c
> +++ b/libavcodec/utils.c
> @@ -954,8 +954,10 @@ int attribute_align_arg 
> avcodec_encode_audio2(AVCodecContext *avctx,
>                  avctx->internal->last_audio_frame = 1;
>              }
>  
> -            if (frame->nb_samples != avctx->frame_size)
> -                return AVERROR(EINVAL);
> +            if (frame->nb_samples != avctx->frame_size) {
> +                ret = AVERROR(EINVAL);
> +                goto end;
> +            }
>          }
>      }
>  
> @@ -986,7 +988,7 @@ int attribute_align_arg 
> avcodec_encode_audio2(AVCodecContext *avctx,
>      if (ret < 0 || !*got_packet_ptr) {
>          av_free_packet(avpkt);
>          av_init_packet(avpkt);
> -        return ret;
> +        goto end;
>      }
>  
>      /* NOTE: if we add any audio encoders which output non-keyframe packets,
> @@ -994,6 +996,7 @@ int attribute_align_arg 
> avcodec_encode_audio2(AVCodecContext *avctx,
>               here to simplify things */
>      avpkt->flags |= AV_PKT_FLAG_KEY;
>  
> +end:
>      if (padded_frame) {
>          av_freep(&padded_frame->data[0]);
>          if (padded_frame->extended_data != padded_frame->data)

ping.

-Justin

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to