From 6085ed358d18dcff6010c517a62c73e7810376c2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Jun 2020 21:09:29 +0200 Subject: [PATCH] (RPNG) Use malloc --- libretro-common/formats/png/rpng.c | 44 ++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/libretro-common/formats/png/rpng.c b/libretro-common/formats/png/rpng.c index ae94b81ce8..deb72f163c 100644 --- a/libretro-common/formats/png/rpng.c +++ b/libretro-common/formats/png/rpng.c @@ -870,13 +870,45 @@ bool png_realloc_idat(const struct png_chunk *chunk, struct idat_buffer *buf) static struct rpng_process *rpng_process_init(rpng_t *rpng) { - uint8_t *inflate_buf = NULL; - struct rpng_process *process = (struct rpng_process*)calloc(1, sizeof(*process)); + uint8_t *inflate_buf = NULL; + struct rpng_process *process = (struct rpng_process*)malloc(sizeof(*process)); if (!process) return NULL; - process->stream_backend = trans_stream_get_zlib_inflate_backend(); + process->inflate_initialized = false; + process->adam7_pass_initialized = false; + process->pass_initialized = false; + process->prev_scanline = NULL; + process->decoded_scanline = NULL; + process->inflate_buf = NULL; + + process->ihdr.width = 0; + process->ihdr.height = 0; + process->ihdr.depth = 0; + process->ihdr.color_type = 0; + process->ihdr.compression = 0; + process->ihdr.filter = 0; + process->ihdr.interlace = 0; + + process->restore_buf_size = 0; + process->adam7_restore_buf_size = 0; + process->data_restore_buf_size = 0; + process->inflate_buf_size = 0; + process->avail_in = 0; + process->avail_out = 0; + process->total_out = 0; + process->pass_size = 0; + process->bpp = 0; + process->pitch = 0; + process->h = 0; + process->pass_width = 0; + process->pass_height = 0; + process->pass_pos = 0; + process->data = 0; + process->palette = 0; + process->stream = NULL; + process->stream_backend = trans_stream_get_zlib_inflate_backend(); png_pass_geom(&rpng->ihdr, rpng->ihdr.width, rpng->ihdr.height, NULL, NULL, &process->inflate_buf_size); @@ -896,9 +928,9 @@ static struct rpng_process *rpng_process_init(rpng_t *rpng) goto error; process->inflate_buf = inflate_buf; - process->avail_in = rpng->idat_buf.size; - process->avail_out = process->inflate_buf_size; - process->total_out = 0; + process->avail_in = rpng->idat_buf.size; + process->avail_out = process->inflate_buf_size; + process->stream_backend->set_in( process->stream, rpng->idat_buf.data,