[SDL_mixer] Patch for mikmod issues.

Jon Ciesla limb at fedoraproject.org
Mon Jul 30 12:58:42 UTC 2012


commit cbf79fc689731552f58b66fc1ca69a4c55854421
Author: Jon Ciesla <limburgher at gmail.com>
Date:   Mon Jul 30 07:58:28 2012 -0500

    Patch for mikmod issues.

 SDL_mixer-MikMod-1.patch |   67 ++++++++++++++++++++++++++++++++++++++++++++++
 SDL_mixer-MikMod-2.patch |   35 ++++++++++++++++++++++++
 SDL_mixer.spec           |   10 +++++-
 3 files changed, 110 insertions(+), 2 deletions(-)
---
diff --git a/SDL_mixer-MikMod-1.patch b/SDL_mixer-MikMod-1.patch
new file mode 100644
index 0000000..b3bb829
--- /dev/null
+++ b/SDL_mixer-MikMod-1.patch
@@ -0,0 +1,67 @@
+
+# HG changeset patch
+# User Sam Lantinga <slouken at 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();
+ 
+
diff --git a/SDL_mixer-MikMod-2.patch b/SDL_mixer-MikMod-2.patch
new file mode 100644
index 0000000..6e89ca8
--- /dev/null
+++ b/SDL_mixer-MikMod-2.patch
@@ -0,0 +1,35 @@
+
+# HG changeset patch
+# User Sam Lantinga <slouken at libsdl.org>
+# Date 1343000017 25200
+# Node ID 2ebb0d016f277f7f643d8a66ed0e1099e10d1fba
+# Parent  56cad6484b04f83c8d42428c755a046678506436
+Fixed normal linking with libmikmod and linking with earlier versions of libmikmod.
+
+diff -r 56cad6484b04 -r 2ebb0d016f27 dynamic_mod.c
+--- a/dynamic_mod.c	Sun Jul 22 16:13:27 2012 -0700
++++ b/dynamic_mod.c	Sun Jul 22 16:33:37 2012 -0700
+@@ -97,8 +97,8 @@
+ 			(void (*)(void*))
+ 			SDL_LoadFunction(mikmod.handle, "MikMod_free");
+ 		if ( mikmod.MikMod_free == NULL ) {
+-			SDL_UnloadObject(mikmod.handle);
+-			return -1;
++			/* libmikmod 3.1 and earlier doesn't have it */
++			mikmod.MikMod_free = free;
+ 		}
+ 		mikmod.Player_Active =
+ 			(BOOL (*)(void))
+@@ -246,6 +246,11 @@
+ 		mikmod.MikMod_RegisterDriver = MikMod_RegisterDriver;
+ 		mikmod.MikMod_errno = &MikMod_errno;
+ 		mikmod.MikMod_strerror = MikMod_strerror;
++#if LIBMIKMOD_VERSION < ((3<<16)|(2<<8))
++		mikmod.MikMod_free = free;
++#else
++		mikmod.MikMod_free = MikMod_free;
++#endif
+ 		mikmod.Player_Active = Player_Active;
+ 		mikmod.Player_Free = Player_Free;
+ 		mikmod.Player_LoadGeneric = Player_LoadGeneric;
+
diff --git a/SDL_mixer.spec b/SDL_mixer.spec
index f514603..d7a9ac1 100644
--- a/SDL_mixer.spec
+++ b/SDL_mixer.spec
@@ -9,6 +9,10 @@ URL:		http://www.libsdl.org/projects/SDL_mixer/
 Source0:	http://www.libsdl.org/projects/%{name}/release/%{name}-%{version}.tar.gz
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
+# MikMod-related fixes from trunk
+Patch0:         SDL_mixer-MikMod-1.patch
+Patch1:         SDL_mixer-MikMod-2.patch
+
 BuildRequires:	SDL-devel >= 1.2.10 
 BuildRequires:	libvorbis-devel
 BuildRequires:	flac-devel
@@ -36,6 +40,8 @@ developing applications that use %{name}.
 
 %prep
 %setup -q
+%patch0 -p1
+%patch1 -p1
 
 %build
 %configure --disable-dependency-tracking	\
@@ -77,8 +83,8 @@ rm -rf $RPM_BUILD_ROOT
 %{_includedir}/SDL
 
 %changelog
-* Wed Jul 18 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.2.12-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+* Sun Jul 29 2012 Jan Dvorak <mordae at anilinux.org> - 1.2.12-2
+- Apply MikMod-related fixes from trunk to prevent crashes.
 
 * Tue Jan 31 2012 Jon Ciesla <limburgher at gmail.com> - 1.2.12-1
 - New upstream.


More information about the scm-commits mailing list