From e6b9072be34921353062661f7f0675deb3e229b7 Mon Sep 17 00:00:00 2001 From: Harry Jeffery Date: Fri, 15 Feb 2019 22:02:57 +0000 Subject: png: Don't use non-portable alloca --- src/backend_libpng.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/backend_libpng.c b/src/backend_libpng.c index 2696007..a4697c6 100644 --- a/src/backend_libpng.c +++ b/src/backend_libpng.c @@ -1,7 +1,6 @@ #include "backend_libpng.h" #include "backend.h" #include "source.h" -#include #include #include #include @@ -98,7 +97,7 @@ static int load_image(struct imv_source *src) return -1; } - png_bytep *rows = alloca(sizeof(png_bytep) * src->height); + png_bytep *rows = malloc(sizeof(png_bytep) * src->height); size_t row_len = png_get_rowbytes(private->png, private->info); rows[0] = malloc(src->height * row_len); for (int y = 1; y < src->height; ++y) { @@ -107,14 +106,17 @@ static int load_image(struct imv_source *src) if (setjmp(png_jmpbuf(private->png))) { free(rows[0]); + free(rows); report_error(src); return -1; } png_read_image(private->png, rows); + void *bmp = rows[0]; + free(rows); fclose(private->file); private->file = NULL; - send_bitmap(src, rows[0]); + send_bitmap(src, bmp); return 0; } -- cgit v1.2.3