SDL_image: Fix wrong size malloc and minor memleak

From e4cf15ebc1b86101c9ed96182237e9d253a50302 Mon Sep 17 00:00:00 2001
From: Ankith <[EMAIL REDACTED]>
Date: Sat, 17 Sep 2022 09:15:45 +0530
Subject: [PATCH] Fix wrong size malloc and minor memleak

---
 IMG_png.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/IMG_png.c b/IMG_png.c
index e9db1fbc..916470b6 100644
--- a/IMG_png.c
+++ b/IMG_png.c
@@ -603,7 +603,7 @@ static int IMG_SavePNG_RW_libpng(SDL_Surface *surface, SDL_RWops *dst, int freed
             int i;
             int last_transparent = -1;
 
-            color_ptr = (png_colorp)SDL_malloc(sizeof(png_colorp) * ncolors);
+            color_ptr = (png_colorp)SDL_malloc(sizeof(png_color) * ncolors);
             if (color_ptr == NULL)
             {
                 lib.png_destroy_write_struct(&png_ptr, &info_ptr);
@@ -656,6 +656,7 @@ static int IMG_SavePNG_RW_libpng(SDL_Surface *surface, SDL_RWops *dst, int freed
 
             row_pointers = (png_bytep *) SDL_malloc(sizeof(png_bytep) * source->h);
             if (!row_pointers) {
+                free(color_ptr);
                 lib.png_destroy_write_struct(&png_ptr, &info_ptr);
                 IMG_SetError("Out of memory");
                 return -1;