shithub: cstory

Download patch

ref: 664d76f94e35e77927739b63d50078c540238175
parent: df9dc3e22dc4a39fffb4bb4ceb7d9a0974b5c92b
parent: 2911bfda5c6051a768dd012e98aa6eae7f82b7f0
author: Clownacy <Clownacy@users.noreply.github.com>
date: Mon Jan 6 15:37:02 EST 2020

Merge pull request #90 from GabrielRavier/bugFix/portableValgrindStuff

Fix memory bugs

--- a/src/Backends/Rendering/SDLTexture.cpp
+++ b/src/Backends/Rendering/SDLTexture.cpp
@@ -154,7 +154,7 @@
 
 	*pitch = surface->width * 3;
 
-	surface->pixels = (unsigned char*)malloc(surface->width * surface->height * 3);
+	surface->pixels = (unsigned char*)calloc(surface->width * surface->height * 3, 1);	// Make sure these are initialized
 
 	return surface->pixels;
 }
@@ -303,6 +303,7 @@
 	}
 
 	SDL_UpdateTexture(glyph->texture, NULL, buffer, width * 4);
+	free(buffer);
 
 	glyph->width = width;
 	glyph->height = height;
--- a/src/Draw.cpp
+++ b/src/Draw.cpp
@@ -160,8 +160,6 @@
 {
 	SDL_Surface *converted_surface = SDL_ConvertSurfaceFormat(surface, SDL_PIXELFORMAT_RGB24, 0);
 
-	SDL_FreeSurface(surface);
-
 	if (converted_surface == NULL)
 		return FALSE;
 
@@ -243,6 +241,7 @@
 	if (!ScaleAndUploadSurface(surface, surf_no))
 	{
 		Backend_FreeSurface(surf[surf_no]);
+		SDL_FreeSurface(surface);
 		return FALSE;
 	}
 
@@ -251,6 +250,7 @@
 	surface_metadata[surf_no].height = surface->h;
 	surface_metadata[surf_no].bSystem = FALSE;
 	strcpy(surface_metadata[surf_no].name, name);
+	SDL_FreeSurface(surface);
 
 	return TRUE;
 }
@@ -302,6 +302,7 @@
 	if (!ScaleAndUploadSurface(surface, surf_no))
 	{
 		Backend_FreeSurface(surf[surf_no]);
+		SDL_FreeSurface(surface);
 		return FALSE;
 	}
 
@@ -310,6 +311,7 @@
 	surface_metadata[surf_no].height = surface->h;
 	surface_metadata[surf_no].bSystem = FALSE;
 	strcpy(surface_metadata[surf_no].name, name);
+	SDL_FreeSurface(surface);
 
 	return TRUE;
 }
@@ -327,8 +329,13 @@
 	SDL_Surface *surface = SDL_LoadBMP_RW(fp, 1);
 
 	if (!ScaleAndUploadSurface(surface, surf_no))
+	{
+		SDL_FreeSurface(surface);
 		return FALSE;
+	}
 
+	SDL_FreeSurface(surface);
+
 	surface_metadata[surf_no].type = SURFACE_SOURCE_RESOURCE;
 	strcpy(surface_metadata[surf_no].name, name);
 
@@ -366,8 +373,12 @@
 	}
 
 	if (!ScaleAndUploadSurface(surface, surf_no))
+	{
+		SDL_FreeSurface(surface);
 		return FALSE;
+	}
 
+	SDL_FreeSurface(surface);
 	surface_metadata[surf_no].type = SURFACE_SOURCE_FILE;
 	strcpy(surface_metadata[surf_no].name, name);
 
--