rpms/prboom/FC-4 prboom-2.3.1-fixpsnprintf.patch, NONE, 1.1 prboom-2.3.1-gcc4.patch, 1.1, 1.2 prboom.spec, 1.1, 1.2

Michael Thomas (wart) fedora-extras-commits at redhat.com
Sun Mar 19 07:02:27 UTC 2006


Author: wart

Update of /cvs/extras/rpms/prboom/FC-4
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv19590

Modified Files:
	prboom-2.3.1-gcc4.patch prboom.spec 
Added Files:
	prboom-2.3.1-fixpsnprintf.patch 
Log Message:
Fix segfault on i386 (BZ #185741)



prboom-2.3.1-fixpsnprintf.patch:

--- NEW FILE prboom-2.3.1-fixpsnprintf.patch ---
diff -Naur prboom-2.3.1/src/psnprntf.c prboom-2.3.1.new/src/psnprntf.c
--- prboom-2.3.1/src/psnprntf.c	2004-09-24 11:27:36.000000000 -0700
+++ prboom-2.3.1.new/src/psnprntf.c	2006-03-18 09:04:48.000000000 -0800
@@ -130,7 +130,7 @@
     case 'X': \
     case 'p': \
         GET_VARS \
-        ncount += pvsnfmt_int(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, &ap); \
+        ncount += pvsnfmt_int(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, (*pfmt == 'p' || prefix == 'l')? va_arg(ap, unsigned long):va_arg(ap, int)); \
         state = STATE_NONE; \
         break; \
     case 'e': \
@@ -139,17 +139,17 @@
     case 'g': \
     case 'G': \
         GET_VARS \
-        ncount += pvsnfmt_double(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, &ap); \
+        ncount += pvsnfmt_double(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, va_arg(ap, double)); \
         state = STATE_NONE; \
         break; \
     case 'c': \
         GET_VARS \
-        ncount += pvsnfmt_char(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, &ap); \
+        ncount += pvsnfmt_char(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, va_arg(ap, int)); \
         state = STATE_NONE; \
         break; \
     case 's': \
         GET_VARS \
-        ncount += pvsnfmt_str(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, &ap); \
+        ncount += pvsnfmt_str(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, va_arg(ap, char *)); \
         state = STATE_NONE; \
         break; \
     case 'n': \
@@ -306,11 +306,11 @@
 }
 
 int pvsnfmt_char(char **pinsertion, size_t *nmax, const char fmt, int flags,
-                 int width, int precision, char prefix, va_list *ap)
+                 int width, int precision, char prefix, int arg)
 {
     if (*nmax > 1)
     {
-        **pinsertion = (char) va_arg(*ap, int);
+        **pinsertion = (char) arg;
         *pinsertion += 1;
         *nmax -= 1;
     }
@@ -338,9 +338,8 @@
  */
 
 int pvsnfmt_str(char **pinsertion, size_t *nmax, const char fmt, int flags,
-                int width, int precision, char prefix, va_list *ap)
+                int width, int precision, char prefix, const char *str)
 {
-    const char *str = va_arg(*ap, const char *);
     int nprinted;
     int len;
     int pad = 0;
@@ -428,7 +427,7 @@
  */
 
 int pvsnfmt_int(char **pinsertion, size_t *nmax, char fmt, int flags,
-                int width, int precision, char prefix, va_list *ap)
+                int width, int precision, char prefix, unsigned long arg)
 {
     long int number = 0;
     unsigned long int unumber;
@@ -463,17 +462,17 @@
         {
             case 'd':
             case 'i':
-                number = (signed short int) va_arg(*ap, int);
+                number = (signed short int) arg;
                 break;
             case 'u':
             case 'o':
             case 'x':
             case 'X':
-                unumber = (unsigned short int) va_arg(*ap, int);
+                unumber = (unsigned short int) arg;
                 numbersigned = 0;
                 break;
              case 'p':
-                unumber = (unsigned long) va_arg(*ap, void *);
+                unumber = arg;
                 numbersigned = 0;
         }
         break;
@@ -482,17 +481,17 @@
         {
             case 'd':
             case 'i':
-                number = va_arg(*ap, signed long int);
+                number = arg;
                 break;
             case 'u':
             case 'o':
             case 'x':
             case 'X':
-                unumber = va_arg(*ap, unsigned long int);
+                unumber = arg;
                 numbersigned = 0;
                 break;
              case 'p':
-                unumber = (unsigned long) va_arg(*ap, void *);
+                unumber = arg;
                 numbersigned = numbersigned;
         }
         break;
@@ -501,17 +500,17 @@
         {
             case 'd':
             case 'i':
-                number = va_arg(*ap, signed int);
+                number = (signed int)arg;
                 break;
             case 'u':
             case 'o':
             case 'x':
             case 'X':
-                unumber = va_arg(*ap, unsigned int);
+                unumber = (unsigned int)arg;
                 numbersigned = 0;
                 break;
              case 'p':
-                unumber = (unsigned long) va_arg(*ap, void *);
+                unumber = arg;
                 numbersigned = 0;
          }
     } /* switch fmt to retrieve number */
@@ -784,13 +783,11 @@
  */
 
 int pvsnfmt_double(char **pinsertion, size_t *nmax, const char fmt, int flags,
-                int width, int precision, char prefix, va_list *ap)
+                int width, int precision, char prefix, double value)
 {
     char *digits;
     int sign = 0;
     int dec;
-    double value = va_arg(*ap, double);
-
     int len;
     int pad = 0;
     int signwidth = 0;
diff -Naur prboom-2.3.1/src/psnprntf.h prboom-2.3.1.new/src/psnprntf.h
--- prboom-2.3.1/src/psnprntf.h	2004-09-15 12:09:27.000000000 -0700
+++ prboom-2.3.1.new/src/psnprntf.h	2006-03-18 09:05:19.000000000 -0800
@@ -17,16 +17,16 @@
  * if there had been enough room).
  */
 int pvsnfmt_char(char **pinsertion, size_t *nmax, const char fmt, int flags,
-                 int width, int precision, char prefix, va_list *ap);
+                 int width, int precision, char prefix, int arg);
 
 int pvsnfmt_int(char **pinsertion, size_t *nmax, char fmt, int flags,
-                 int width, int precision, char prefix, va_list *ap);
+                 int width, int precision, char prefix, unsigned long arg);
 
 int pvsnfmt_str(char **pinsertion, size_t *nmax, const char fmt, int flags,
-                 int width, int precision, char prefix, va_list *ap);
+                 int width, int precision, char prefix, const char *str);
 
 int pvsnfmt_double(char **pinsertion, size_t *nmax, const char fmt, int flags,
-                 int width, int precision, char prefix, va_list *ap);
+                 int width, int precision, char prefix, double value);
 
 /* These are the flags you need (use logical OR) for the flags parameter of
  * fmt functions above.

prboom-2.3.1-gcc4.patch:

Index: prboom-2.3.1-gcc4.patch
===================================================================
RCS file: /cvs/extras/rpms/prboom/FC-4/prboom-2.3.1-gcc4.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- prboom-2.3.1-gcc4.patch	14 Mar 2006 19:30:09 -0000	1.1
+++ prboom-2.3.1-gcc4.patch	19 Mar 2006 07:02:25 -0000	1.2
@@ -89,176 +89,6 @@
  extern int iquehead;
  extern int iquetail;
  extern int gravity;
-diff -Naur prboom-2.3.1/src/psnprntf.c prboom-2.3.1.new/src/psnprntf.c
---- prboom-2.3.1/src/psnprntf.c	2004-09-24 11:27:36.000000000 -0700
-+++ prboom-2.3.1.new/src/psnprntf.c	2006-03-06 20:42:04.000000000 -0800
-@@ -130,7 +130,7 @@
-     case 'X': \
-     case 'p': \
-         GET_VARS \
--        ncount += pvsnfmt_int(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, &ap); \
-+        ncount += pvsnfmt_int(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, ap); \
-         state = STATE_NONE; \
-         break; \
-     case 'e': \
-@@ -139,17 +139,17 @@
-     case 'g': \
-     case 'G': \
-         GET_VARS \
--        ncount += pvsnfmt_double(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, &ap); \
-+        ncount += pvsnfmt_double(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, ap); \
-         state = STATE_NONE; \
-         break; \
-     case 'c': \
-         GET_VARS \
--        ncount += pvsnfmt_char(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, &ap); \
-+        ncount += pvsnfmt_char(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, ap); \
-         state = STATE_NONE; \
-         break; \
-     case 's': \
-         GET_VARS \
--        ncount += pvsnfmt_str(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, &ap); \
-+        ncount += pvsnfmt_str(&pinsertion, &nmax, *pfmt, flags, width, precision, prefix, ap); \
-         state = STATE_NONE; \
-         break; \
-     case 'n': \
-@@ -306,11 +306,11 @@
- }
- 
- int pvsnfmt_char(char **pinsertion, size_t *nmax, const char fmt, int flags,
--                 int width, int precision, char prefix, va_list *ap)
-+                 int width, int precision, char prefix, va_list ap)
- {
-     if (*nmax > 1)
-     {
--        **pinsertion = (char) va_arg(*ap, int);
-+        **pinsertion = (char) va_arg(ap, int);
-         *pinsertion += 1;
-         *nmax -= 1;
-     }
-@@ -338,9 +338,9 @@
-  */
- 
- int pvsnfmt_str(char **pinsertion, size_t *nmax, const char fmt, int flags,
--                int width, int precision, char prefix, va_list *ap)
-+                int width, int precision, char prefix, va_list ap)
- {
--    const char *str = va_arg(*ap, const char *);
-+    const char *str = va_arg(ap, const char *);
-     int nprinted;
-     int len;
-     int pad = 0;
-@@ -428,7 +428,7 @@
-  */
- 
- int pvsnfmt_int(char **pinsertion, size_t *nmax, char fmt, int flags,
--                int width, int precision, char prefix, va_list *ap)
-+                int width, int precision, char prefix, va_list ap)
- {
-     long int number = 0;
-     unsigned long int unumber;
-@@ -463,17 +463,17 @@
-         {
-             case 'd':
-             case 'i':
--                number = (signed short int) va_arg(*ap, int);
-+                number = (signed short int) va_arg(ap, int);
-                 break;
-             case 'u':
-             case 'o':
-             case 'x':
-             case 'X':
--                unumber = (unsigned short int) va_arg(*ap, int);
-+                unumber = (unsigned short int) va_arg(ap, int);
-                 numbersigned = 0;
-                 break;
-              case 'p':
--                unumber = (unsigned long) va_arg(*ap, void *);
-+                unumber = (unsigned long) va_arg(ap, void *);
-                 numbersigned = 0;
-         }
-         break;
-@@ -482,17 +482,17 @@
-         {
-             case 'd':
-             case 'i':
--                number = va_arg(*ap, signed long int);
-+                number = va_arg(ap, signed long int);
-                 break;
-             case 'u':
-             case 'o':
-             case 'x':
-             case 'X':
--                unumber = va_arg(*ap, unsigned long int);
-+                unumber = va_arg(ap, unsigned long int);
-                 numbersigned = 0;
-                 break;
-              case 'p':
--                unumber = (unsigned long) va_arg(*ap, void *);
-+                unumber = (unsigned long) va_arg(ap, void *);
-                 numbersigned = numbersigned;
-         }
-         break;
-@@ -501,17 +501,17 @@
-         {
-             case 'd':
-             case 'i':
--                number = va_arg(*ap, signed int);
-+                number = va_arg(ap, signed int);
-                 break;
-             case 'u':
-             case 'o':
-             case 'x':
-             case 'X':
--                unumber = va_arg(*ap, unsigned int);
-+                unumber = va_arg(ap, unsigned int);
-                 numbersigned = 0;
-                 break;
-              case 'p':
--                unumber = (unsigned long) va_arg(*ap, void *);
-+                unumber = (unsigned long) va_arg(ap, void *);
-                 numbersigned = 0;
-          }
-     } /* switch fmt to retrieve number */
-@@ -784,12 +784,12 @@
-  */
- 
- int pvsnfmt_double(char **pinsertion, size_t *nmax, const char fmt, int flags,
--                int width, int precision, char prefix, va_list *ap)
-+                int width, int precision, char prefix, va_list ap)
- {
-     char *digits;
-     int sign = 0;
-     int dec;
--    double value = va_arg(*ap, double);
-+    double value = va_arg(ap, double);
- 
-     int len;
-     int pad = 0;
-diff -Naur prboom-2.3.1/src/psnprntf.h prboom-2.3.1.new/src/psnprntf.h
---- prboom-2.3.1/src/psnprntf.h	2004-09-15 12:09:27.000000000 -0700
-+++ prboom-2.3.1.new/src/psnprntf.h	2006-03-06 20:42:04.000000000 -0800
-@@ -17,16 +17,16 @@
-  * if there had been enough room).
-  */
- int pvsnfmt_char(char **pinsertion, size_t *nmax, const char fmt, int flags,
--                 int width, int precision, char prefix, va_list *ap);
-+                 int width, int precision, char prefix, va_list ap);
- 
- int pvsnfmt_int(char **pinsertion, size_t *nmax, char fmt, int flags,
--                 int width, int precision, char prefix, va_list *ap);
-+                 int width, int precision, char prefix, va_list ap);
- 
- int pvsnfmt_str(char **pinsertion, size_t *nmax, const char fmt, int flags,
--                 int width, int precision, char prefix, va_list *ap);
-+                 int width, int precision, char prefix, va_list ap);
- 
- int pvsnfmt_double(char **pinsertion, size_t *nmax, const char fmt, int flags,
--                 int width, int precision, char prefix, va_list *ap);
-+                 int width, int precision, char prefix, va_list ap);
- 
- /* These are the flags you need (use logical OR) for the flags parameter of
-  * fmt functions above.
 diff -Naur prboom-2.3.1/src/r_bsp.h prboom-2.3.1.new/src/r_bsp.h
 --- prboom-2.3.1/src/r_bsp.h	2004-09-15 12:09:31.000000000 -0700
 +++ prboom-2.3.1.new/src/r_bsp.h	2006-03-06 20:42:04.000000000 -0800


Index: prboom.spec
===================================================================
RCS file: /cvs/extras/rpms/prboom/FC-4/prboom.spec,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- prboom.spec	14 Mar 2006 19:30:09 -0000	1.1
+++ prboom.spec	19 Mar 2006 07:02:25 -0000	1.2
@@ -2,7 +2,7 @@
 
 Name:           prboom
 Version:        2.3.1
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        Open source port of the DOOM game engine
 
 Group:          Amusements/Games
@@ -13,6 +13,7 @@
 Patch1:         prboom-2.3.1-gamedir.patch
 Patch2:         prboom-2.3.1-config.patch
 Patch3:         prboom-2.3.1-64bit.patch
+Patch4:         prboom-2.3.1-fixpsnprintf.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:  SDL_mixer-devel SDL_net-devel
@@ -32,6 +33,7 @@
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
+%patch4 -p1
 
 %build
 %configure --disable-cpu-opt --program-prefix=''
@@ -67,6 +69,9 @@
 %doc doc/README.compat doc/README.demos doc/MBF.txt doc/MBFFAQ.txt doc/boom.txt
 
 %changelog
+* Sat Mar 18 2006 Wart <wart at kobold.org> 2.3.1-5
+- Updated patches to fix segfault on i386 (BZ #185741)
+
 * Tue Mar 14 2006 Wart <wart at kobold.org> 2.3.1-4
 - Added patch to fix up some x86_64 issues
 




More information about the fedora-extras-commits mailing list