comparison xan.c @ 10700:96a836b623ba libavcodec

Improve handling allocated buffers in Xan decoder
author kostya
date Sat, 19 Dec 2009 17:04:30 +0000
parents 633727ffa79a
children fb7d1f0e8bc6
comparison
equal deleted inserted replaced
10699:633727ffa79a 10700:96a836b623ba
74 74
75 avctx->pix_fmt = PIX_FMT_PAL8; 75 avctx->pix_fmt = PIX_FMT_PAL8;
76 76
77 s->buffer1_size = avctx->width * avctx->height; 77 s->buffer1_size = avctx->width * avctx->height;
78 s->buffer1 = av_malloc(s->buffer1_size); 78 s->buffer1 = av_malloc(s->buffer1_size);
79 if (!s->buffer1)
80 return -1;
79 s->buffer2_size = avctx->width * avctx->height; 81 s->buffer2_size = avctx->width * avctx->height;
80 s->buffer2 = av_malloc(s->buffer2_size + 130); 82 s->buffer2 = av_malloc(s->buffer2_size + 130);
81 if (!s->buffer1 || !s->buffer2) 83 if (!s->buffer2) {
84 av_freep(&s->buffer1);
82 return -1; 85 return -1;
86 }
83 87
84 return 0; 88 return 0;
85 } 89 }
86 90
87 static int xan_huffman_decode(unsigned char *dest, const unsigned char *src, 91 static int xan_huffman_decode(unsigned char *dest, const unsigned char *src,
403 if (s->last_frame.data[0]) 407 if (s->last_frame.data[0])
404 avctx->release_buffer(avctx, &s->last_frame); 408 avctx->release_buffer(avctx, &s->last_frame);
405 if (s->current_frame.data[0]) 409 if (s->current_frame.data[0])
406 avctx->release_buffer(avctx, &s->current_frame); 410 avctx->release_buffer(avctx, &s->current_frame);
407 411
408 av_free(s->buffer1); 412 av_freep(&s->buffer1);
409 av_free(s->buffer2); 413 av_freep(&s->buffer2);
410 414
411 return 0; 415 return 0;
412 } 416 }
413 417
414 AVCodec xan_wc3_decoder = { 418 AVCodec xan_wc3_decoder = {