[nogravity] Take a stab at fixing the crash reported in rhbz#699274 (race condition, cannot reproduce) Fix build

Hans de Goede jwrdegoede at fedoraproject.org
Tue Dec 6 15:31:36 UTC 2011


commit 193acf009aec69fc782ccf9399d1645ff1cc9c49
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Tue Dec 6 16:32:09 2011 +0100

    Take a stab at fixing the crash reported in rhbz#699274
    (race condition, cannot reproduce)
    Fix building with libpng-1.5

 nogravity-2.00-libpng15.patch   |   30 ++++++++++++++++++++++
 nogravity-2.00-rhbz699274.patch |   52 +++++++++++++++++++++++++++++++++++++++
 nogravity.spec                  |   18 +++++++------
 3 files changed, 92 insertions(+), 8 deletions(-)
---
diff --git a/nogravity-2.00-libpng15.patch b/nogravity-2.00-libpng15.patch
new file mode 100644
index 0000000..542cba6
--- /dev/null
+++ b/nogravity-2.00-libpng15.patch
@@ -0,0 +1,30 @@
+diff -up nogravity-2.00/rlx32/src/gx_png.c~ nogravity-2.00/rlx32/src/gx_png.c
+--- nogravity-2.00/rlx32/src/gx_png.c~	2005-05-23 20:14:50.000000000 +0200
++++ nogravity-2.00/rlx32/src/gx_png.c	2011-12-06 16:28:09.710462042 +0100
+@@ -50,7 +50,7 @@ pngx_readm_pData(png_structp png_ptr, pn
+ 	* instead of an int, which is what fread() actually returns.
+ 	*/
+ 	check = (png_size_t)FIO_cur->fread(data, (png_size_t)1, length,
+-	  (SYS_FILEHANDLE)png_ptr->io_ptr);
++	  (SYS_FILEHANDLE)png_get_io_ptr(png_ptr));
+ 
+ 	if (check != length)
+ 	{
+@@ -77,7 +77,7 @@ static void pngx_error(png_structp png_p
+ #ifdef _DEBUG
+ 	SYS_Msg("!%s", message);
+ #endif
+-	longjmp(png_ptr->jmpbuf, 1);
++	png_longjmp(png_ptr, 1);
+ }
+ 
+ static void pngx_warning(png_structp png_ptr, png_const_charp message)
+@@ -121,7 +121,7 @@ if (!pClut)
+ 	info_ptr = png_create_info_struct(png_ptr);
+ 	png_read_info(png_ptr, info_ptr);  /* read all PNG info up to image data */
+ 
+-	if (setjmp(png_ptr->jmpbuf))
++	if (setjmp(png_jmpbuf(png_ptr)))
+ 	{
+ 		png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ 		return NULL;
diff --git a/nogravity-2.00-rhbz699274.patch b/nogravity-2.00-rhbz699274.patch
new file mode 100644
index 0000000..1d2040e
--- /dev/null
+++ b/nogravity-2.00-rhbz699274.patch
@@ -0,0 +1,52 @@
+diff -up nogravity-2.00/src/lt_sound.c~ nogravity-2.00/src/lt_sound.c
+--- nogravity-2.00/src/lt_sound.c~	2011-12-06 15:58:45.000000000 +0100
++++ nogravity-2.00/src/lt_sound.c	2011-12-06 16:12:07.828431143 +0100
+@@ -261,11 +261,13 @@ static u_int32_t CALLING_STD Thread(void
+ {
+ 	UNUSED(context);
+ 	
+-	while (m_Status)
++	while (1)
+ 	{	
+ #ifdef USE_MUTEX
+ 		mutex_lock(&m_Mutex);
+ #endif
++		if (!m_Status)
++			break;
+ 		V3XAStream_Poll(g_pWavStream);
+ #ifdef USE_MUTEX
+ 		mutex_unlock(&m_Mutex);		
+@@ -304,10 +306,10 @@ void NG_AudioPlayTrack(int i)
+ 	m_Thread.pArgument = NULL;
+ 	m_Thread.pFunc = Thread;
+ 	m_Status = 1;
+-	thread_begin(&m_Thread, SYS_THREAD_PRIORITY_NORMAL);
+ #ifdef USE_MUTEX
+ 	mutex_init(&m_Mutex);	
+ #endif
++	thread_begin(&m_Thread, SYS_THREAD_PRIORITY_NORMAL);
+ #endif
+ 
+     return;
+@@ -510,6 +512,10 @@ void NG_AudioStopMusic(void)
+ 
+ 	if (g_pWavStream)
+ 	{
++#ifdef USE_MUTEX
++		m_Status = 0;
++		mutex_lock(&m_Mutex);
++#endif
+ 		for(i=g_SGSettings.VolMusic;i!=0;i--)
+ 		{
+ 			V3XAStream_SetVolume(g_pWavStream, 0, (float)i/100);
+@@ -518,10 +524,6 @@ void NG_AudioStopMusic(void)
+ 			timer_snooze((64L*12L)/((g_SGSettings.VolMusic*4)+1));
+ 		}
+ 		
+-#ifdef USE_MUTEX		
+-		mutex_lock(&m_Mutex);
+-		m_Status = 0;
+-#endif
+ 		V3XAStream_Release(g_pWavStream);
+ 		
+ #ifdef USE_MUTEX
diff --git a/nogravity.spec b/nogravity.spec
index 1156a55..5f2934c 100644
--- a/nogravity.spec
+++ b/nogravity.spec
@@ -1,6 +1,6 @@
 Name:           nogravity
 Version:        2.00
-Release:        13%{?dist}
+Release:        14%{?dist}
 Summary:        Space shooter in 3D
 Group:          Amusements/Games
 License:        GPLv2+
@@ -22,7 +22,8 @@ Patch5:         nogravity--openal.patch
 Patch6:         nogravity--README.patch
 Patch7:         nogravity--bufer-overflows.patch
 Patch8:         nogravity--strcpy-abuse.patch
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Patch9:         nogravity-2.00-rhbz699274.patch
+Patch10:        nogravity-2.00-libpng15.patch
 Requires:       %{name}-data = %{version}
 BuildRequires:  SDL_mixer-devel openal-soft-devel libpng-devel libvorbis-devel
 BuildRequires:  automake desktop-file-utils
@@ -49,6 +50,8 @@ cp %{SOURCE6} ./src/Linux/configure.in
 %patch6 -p1 -b .license
 %patch7 -p1 -b .buf-oflow
 %patch8 -p1 -b .strcpy
+%patch9 -p1
+%patch10 -p1
 sed -i 's/\r//g' GNU.TXT README.TXT
 pushd src/Linux
 sh bootstrap
@@ -72,7 +75,6 @@ popd
 
 
 %install
-rm -rf $RPM_BUILD_ROOT
 mkdir -p $RPM_BUILD_ROOT%{_bindir}
 mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications
 mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps
@@ -86,10 +88,6 @@ install -p -m 644 %{SOURCE3} \
 $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps/%{name}.png
 
 
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-
 %post
 touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
 
@@ -104,7 +102,6 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 
 
 %files
-%defattr(-,root,root,-)
 %doc GNU.TXT README.TXT
 %{_bindir}/%{name}*
 %{_datadir}/applications/fedora-%{name}.desktop
@@ -112,6 +109,11 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 
 
 %changelog
+* Tue Dec 06 2011 Hans de Goede <hdegoede at redhat.com> - 2.00-14
+- Take a stab at fixing the crash reported in rhbz#699274
+  (race condition, cannot reproduce)
+- Fix building with libpng-1.5
+
 * Tue Dec 06 2011 Adam Jackson <ajax at redhat.com> - 2.00-13
 - Rebuild for new libpng
 


More information about the scm-commits mailing list