Mercurial > libavcodec.hg
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 = { |