On 21/05/12 13:48, Jordi Ortiz wrote:
> ---
> libavcodec/dwt.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/dwt.c b/libavcodec/dwt.c
> index f9577fd..7b62ee7 100644
> --- a/libavcodec/dwt.c
> +++ b/libavcodec/dwt.c
> @@ -33,10 +33,24 @@ void ff_slice_buffer_init(slice_buffer *buf, int
> line_count,
> buf->line_width = line_width;
> buf->data_count = max_allocated_lines;
> buf->line = av_mallocz(sizeof(IDWTELEM *) * line_count);
> + if (!buf->line)
> + return AVERROR(ENOMEM);
> buf->data_stack = av_malloc(sizeof(IDWTELEM *) * max_allocated_lines);
> + if (!buf->data_stack) {
> + av_free(buf->line);
> + return AVERROR(ENOMEM);
> + }
>
> - for (i = 0; i < max_allocated_lines; i++)
> + for (i = 0; i < max_allocated_lines; i++) {
> buf->data_stack[i] = av_malloc(sizeof(IDWTELEM) * line_width);
> + if (!buf->data_stack[i]) {
> + while (i >= 0) {
> + av_free(buf->data_stack[i]);
> + i--;
> + }
> + return AVERROR(ENOMEM);
what about line and data_stack ?
I guess a goto might be cleaner.
lu
--
Luca Barbato
Gentoo/linux
http://dev.gentoo.org/~lu_zero
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel