On Fri, Aug 03, 2012 at 10:24:07PM -0400, Derek Buitenhuis wrote: > If there was a failure inflating, or reinitializing > the zstream, the current frame's buffer would be lost. > > Signed-off-by: Derek Buitenhuis <[email protected]> > --- > libavcodec/zerocodec.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/libavcodec/zerocodec.c b/libavcodec/zerocodec.c > index 8d46bfd..cfbd16f 100644 > --- a/libavcodec/zerocodec.c > +++ b/libavcodec/zerocodec.c > @@ -51,17 +51,17 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, > void *data, > pic->pict_type = AV_PICTURE_TYPE_P; > } > > - if (avctx->get_buffer(avctx, pic) < 0) { > - av_log(avctx, AV_LOG_ERROR, "Could not allocate buffer.\n"); > - return AVERROR(ENOMEM); > - } > - > zret = inflateReset(zstream); > if (zret != Z_OK) { > av_log(avctx, AV_LOG_ERROR, "Could not reset inflate: %d.\n", zret); > return AVERROR_INVALIDDATA; > } > > + if (avctx->get_buffer(avctx, pic) < 0) { > + av_log(avctx, AV_LOG_ERROR, "Could not allocate buffer.\n"); > + return AVERROR(ENOMEM); > + } > + > zstream->next_in = avpkt->data; > zstream->avail_in = avpkt->size; > > @@ -78,6 +78,7 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, > void *data, > > zret = inflate(zstream, Z_SYNC_FLUSH); > if (zret != Z_OK && zret != Z_STREAM_END) { > + avctx->release_buffer(avctx, pic); > av_log(avctx, AV_LOG_ERROR, > "Inflate failed with return code: %d.\n", zret); > return AVERROR_INVALIDDATA; > --
probably OK _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
