From 68ede913d03359a617e256c22ae3d976604269b5 Mon Sep 17 00:00:00 2001 From: Donny Yang Date: Sun, 29 Mar 2015 11:05:42 +0000 Subject: [PATCH] png: Return slightly more meaningful error codes Signed-off-by: Donny Yang Signed-off-by: Michael Niedermayer --- libavcodec/pngenc.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c index d6233d0dc4b..946b816f0fc 100644 --- a/libavcodec/pngenc.c +++ b/libavcodec/pngenc.c @@ -373,19 +373,19 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, s->bytestream_end = pkt->data + pkt->size; crow_base = av_malloc((row_size + 32) << (s->filter_type == PNG_FILTER_VALUE_MIXED)); - if (!crow_base) - goto fail; + if (!crow_base) { + ret = AVERROR(ENOMEM); + goto the_end; + } // pixel data should be aligned, but there's a control byte before it crow_buf = crow_base + 15; if (is_progressive) { progressive_buf = av_malloc(row_size + 1); - if (!progressive_buf) - goto fail; - } - if (is_progressive) { top_buf = av_malloc(row_size + 1); - if (!top_buf) - goto fail; + if (!progressive_buf || !top_buf) { + ret = AVERROR(ENOMEM); + goto the_end; + } } /* write png header */ @@ -501,7 +501,8 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, if (ret == Z_STREAM_END) break; } else { - goto fail; + ret = -1; + goto the_end; } } png_write_chunk(&s->bytestream, MKTAG('I', 'E', 'N', 'D'), NULL, 0); @@ -517,9 +518,6 @@ the_end: av_freep(&top_buf); deflateEnd(&s->zstream); return ret; -fail: - ret = -1; - goto the_end; } static av_cold int png_enc_init(AVCodecContext *avctx) -- 2.39.2