# HG changeset patch
# User Sam Lantinga <slouken@libsdl.org>
# Date 1342998807 25200
# Node ID 56cad6484b04f83c8d42428c755a046678506436
# Parent  c92001a2c18f628698c58aa4e05a7335d10d0e9e
Paul P Komkoff Jr fixed malloc/free mismatch in the MikMod driver

diff -r c92001a2c18f -r 56cad6484b04 CHANGES
--- a/CHANGES	Sun Mar 04 21:32:47 2012 +0000
+++ b/CHANGES	Sun Jul 22 16:13:27 2012 -0700
@@ -1,3 +1,7 @@
+1.2.13:
+Paul P Komkoff Jr - Sun Jul 22 16:12:28 PDT 2012
+ * Fixed malloc/free mismatch in the MikMod driver
+
 1.2.12:
 Sam Lantinga - Sat Jan 14 22:00:29 2012 -0500
  * Fixed seek offset with SMPEG (was relative, should be absolute)
diff -r c92001a2c18f -r 56cad6484b04 dynamic_mod.c
--- a/dynamic_mod.c	Sun Mar 04 21:32:47 2012 +0000
+++ b/dynamic_mod.c	Sun Jul 22 16:13:27 2012 -0700
@@ -93,6 +93,13 @@
 			SDL_UnloadObject(mikmod.handle);
 			return -1;
 		}
+		mikmod.MikMod_free =
+			(void (*)(void*))
+			SDL_LoadFunction(mikmod.handle, "MikMod_free");
+		if ( mikmod.MikMod_free == NULL ) {
+			SDL_UnloadObject(mikmod.handle);
+			return -1;
+		}
 		mikmod.Player_Active =
 			(BOOL (*)(void))
 			SDL_LoadFunction(mikmod.handle, "Player_Active");
diff -r c92001a2c18f -r 56cad6484b04 dynamic_mod.h
--- a/dynamic_mod.h	Sun Mar 04 21:32:47 2012 +0000
+++ b/dynamic_mod.h	Sun Jul 22 16:13:27 2012 -0700
@@ -35,6 +35,7 @@
 	void (*MikMod_RegisterDriver)(struct MDRIVER*);
 	int* MikMod_errno;
 	char* (*MikMod_strerror)(int);
+	void (*MikMod_free)(void*);
 	BOOL (*Player_Active)(void);
 	void (*Player_Free)(MODULE*);
 	MODULE* (*Player_LoadGeneric)(MREADER*,int,BOOL);
diff -r c92001a2c18f -r 56cad6484b04 music_mod.c
--- a/music_mod.c	Sun Mar 04 21:32:47 2012 +0000
+++ b/music_mod.c	Sun Jul 22 16:13:27 2012 -0700
@@ -109,13 +109,13 @@
 
 	list = mikmod.MikMod_InfoDriver();
 	if ( list )
-	  free(list);
+	  mikmod.MikMod_free(list);
 	else
 	  mikmod.MikMod_RegisterDriver(mikmod.drv_nos);
 
 	list = mikmod.MikMod_InfoLoader();
 	if ( list )
-	  free(list);
+	  mikmod.MikMod_free(list);
 	else
 	  mikmod.MikMod_RegisterAllLoaders();