[FFmpeg-cvslog] r25004 - trunk/libavformat/a64.c
Benoit Fouet
benoit.fouet
Tue Aug 31 10:45:38 CEST 2010
On Tue, 31 Aug 2010 09:15:11 +0200 (CEST) bindhammer wrote:
> Author: bindhammer
> Date: Tue Aug 31 09:15:11 2010
> New Revision: 25004
>
> Log:
> Solving memory leak and initialization problem with prev_pkt / pkt.
>
> Modified:
> trunk/libavformat/a64.c
>
> Modified: trunk/libavformat/a64.c
> ==============================================================================
> --- trunk/libavformat/a64.c Tue Aug 31 09:14:47 2010 (r25003)
> +++ trunk/libavformat/a64.c Tue Aug 31 09:15:11 2010 (r25004)
> @@ -125,8 +125,16 @@ static int a64_write_packet(struct AVFor
> }
> /* backup current packet for next turn */
> if(pkt->data) {
> - av_new_packet(&c->prev_pkt, pkt->size);
> - memcpy(c->prev_pkt.data, pkt->data, pkt->size);
> + /* no backup packet yet? create one! */
> + if(!c->prev_pkt.data) av_new_packet(&c->prev_pkt, pkt->size);
> + /* we have a packet and data is big enough, reuse it */
> + if(c->prev_pkt.data && c->prev_pkt.size >= pkt->size) {
> + memcpy(c->prev_pkt.data, pkt->data, pkt->size);
> + c->prev_pkt.size = pkt->size;
> + } else {
> + av_log(avctx, AV_LOG_ERROR, "Too less memory for prev_pkt.\n");
> + return AVERROR(ENOMEM);
can that happen?
If yes, maybe you should allocate another one in this case,
desctructing the previous one.
(BTW, the error message is not correct)
--
Ben
More information about the ffmpeg-cvslog
mailing list