[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