From 38907fd0c7a229d70b0d08ba7245ab4d3db20e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 16 Feb 2020 07:25:30 +0100 Subject: [PATCH] Fix memory leaks around PNG/sprite handling (#10711) --- src/openrct2/CmdlineSprite.cpp | 3 ++- src/openrct2/core/Imaging.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/openrct2/CmdlineSprite.cpp b/src/openrct2/CmdlineSprite.cpp index 140015265f..428404410f 100644 --- a/src/openrct2/CmdlineSprite.cpp +++ b/src/openrct2/CmdlineSprite.cpp @@ -222,7 +222,8 @@ static bool sprite_file_export(int32_t spriteIndex, const char* outPath) spriteHeader = &spriteFileEntries[spriteIndex]; pixelBufferSize = spriteHeader->width * spriteHeader->height; - pixels = (uint8_t*)malloc(pixelBufferSize); + std::unique_ptr pixelBuffer(new uint8_t[pixelBufferSize]); + pixels = pixelBuffer.get(); std::fill_n(pixels, pixelBufferSize, 0x00); dpi.bits = pixels; diff --git a/src/openrct2/core/Imaging.cpp b/src/openrct2/core/Imaging.cpp index 18b676fdd0..cefc948edb 100644 --- a/src/openrct2/core/Imaging.cpp +++ b/src/openrct2/core/Imaging.cpp @@ -232,6 +232,7 @@ namespace Imaging } png_write_end(png_ptr, nullptr); + png_destroy_info_struct(png_ptr, &info_ptr); png_free(png_ptr, png_palette); png_destroy_write_struct(&png_ptr, nullptr); }