changeset 1691:e96d0d3bec7f

Don't leak a system context when a game is unloaded
author Mike Pavone <pavone@retrodev.com>
date Sun, 20 Jan 2019 22:48:16 -0800
parents 319d90025d50
children ba3fb7a3be6b
files libblastem.c
diffstat 1 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libblastem.c	Sun Jan 20 22:19:58 2019 -0800
+++ b/libblastem.c	Sun Jan 20 22:48:16 2019 -0800
@@ -56,6 +56,9 @@
 
 RETRO_API void retro_deinit(void)
 {
+	if (current_system) {
+		retro_unload_game();
+	}
 }
 
 RETRO_API unsigned retro_api_version(void)
@@ -185,11 +188,14 @@
 /* Unloads a currently loaded game. */
 RETRO_API void retro_unload_game(void)
 {
-	
 	free(media.dir);
 	free(media.name);
 	free(media.extension);
-	
+	media.dir = media.name = media.extension = NULL;
+	//buffer is freed by the context
+	media.buffer = NULL;
+	current_system->free_context(current_system);
+	current_system = NULL;
 }
 
 /* Gets region of game. */