Signed-off-by: Donny Yang
---
libavcodec/pngenc.c | 22 ++
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c
index bd3aae5..6c8fec2 100644
--- a/libavcodec/pngenc.c
+++ b/libavcodec/pngenc.c
@@ -382,19 +382,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 */
@@ -510,7 +510,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);
@@ -526,9 +527,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.3.4
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel