Author: jseidel-guest
Date: 2007-09-19 20:43:02 +0000 (Wed, 19 Sep 2007)
New Revision: 4246

Modified:
   packages/trunk/hex-a-hop/debian/changelog
   packages/trunk/hex-a-hop/debian/patches/endianess.patch
   packages/trunk/hex-a-hop/debian/patches/misc_errors.patch
Log:
Fixed a build error on m68k because of a wrong alignment test.
Closes: #442854


Modified: packages/trunk/hex-a-hop/debian/changelog
===================================================================
--- packages/trunk/hex-a-hop/debian/changelog   2007-09-19 15:38:08 UTC (rev 
4245)
+++ packages/trunk/hex-a-hop/debian/changelog   2007-09-19 20:43:02 UTC (rev 
4246)
@@ -10,8 +10,10 @@
   * Fix compilation error on the Hurd where PATH_MAX is not defined.
   * A string was not translateable. Thanks to Piotr Engelking
     <[EMAIL PROTECTED]> for the patch. Closes: 443193
+  * Fixed a build error on m68k because of a wrong alignment test.
+    Closes: #442854
 
- -- Jens Seidel <[EMAIL PROTECTED]>  Wed, 19 Sep 2007 17:30:00 +0200
+ -- Jens Seidel <[EMAIL PROTECTED]>  Wed, 19 Sep 2007 22:30:00 +0200
 
 hex-a-hop (0.0.20070315-5) unstable; urgency=low
 

Modified: packages/trunk/hex-a-hop/debian/patches/endianess.patch
===================================================================
--- packages/trunk/hex-a-hop/debian/patches/endianess.patch     2007-09-19 
15:38:08 UTC (rev 4245)
+++ packages/trunk/hex-a-hop/debian/patches/endianess.patch     2007-09-19 
20:43:02 UTC (rev 4246)
@@ -6,7 +6,7 @@
 ===================================================================
 --- hex-a-hop.svn.orig/packfile.h      2007-09-09 18:28:14.000000000 +0200
 +++ hex-a-hop.svn/packfile.h   2007-09-09 19:16:58.000000000 +0200
-@@ -16,11 +16,23 @@
+@@ -16,11 +16,21 @@
      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
  
@@ -23,23 +23,13 @@
  
  struct PackFile1
  {
-+  /* CHECKME: Is it save to interpret a byte stream as list of Entries?
-+   * Does the alignment could increase the Entry size on 64 bit systems? */
        class Entry {
 -              int len;
 +              int32_t len;
        public:
                char name[1];
  
-@@ -42,6 +54,7 @@
-                       return len - strlen(name) - 1;
-               }
-       };
-+      int static_assert1[sizeof(Entry)==8 ? 0 : -1];
- 
-       int numfiles;
-       Entry** e;
-@@ -73,10 +86,11 @@
+@@ -73,10 +83,11 @@
                if (numfiles || e || data)
                        FATAL("Calling Packfile1::Read when already 
initialised.");
  
@@ -52,7 +42,7 @@
                fseek(f, end_offset - size, SEEK_SET);
  
                data = malloc(size);
-@@ -88,10 +102,12 @@
+@@ -88,10 +99,12 @@
                while ((void*)i < data_end)
                {
                        numfiles++;
@@ -145,7 +135,7 @@
                        diff = 0;
  
                #ifdef USE_LEVEL_PACKFILE
-@@ -1902,13 +1914,18 @@ struct HexPuzzle : public State
+@@ -1902,13 +1910,18 @@ struct HexPuzzle : public State
                return false;
        }
  
@@ -165,7 +155,7 @@
                if (save)
                        fprintf(f, "%d\n", version);
                else
-@@ -1935,13 +1952,26 @@
+@@ -1935,13 +1948,26 @@
                if (version==1)
                {
                        for (int i=0; i<MAP_SIZE; i++)
@@ -193,7 +183,7 @@
                }
                else if (version>=2 && version<=4)
                {
-@@ -1966,18 +1996,28 @@
+@@ -1966,18 +1992,28 @@
                                memset(map_item, 0, sizeof(map_item));
                        }
  
@@ -224,7 +214,7 @@
  
                        int offsetx=0, offsety=0;
  
-@@ -2016,24 +2056,27 @@
+@@ -2016,24 +2052,27 @@
                                        for (int j=bounds[2]; j<=bounds[3]; j++)
                                                if (special[i][j])
                                                {
@@ -254,7 +244,7 @@
                                        if (len<0) break;
                                        char* tmp = new char[len+1];
                                        tmp[len] = 0;
-@@ -2398,10 +2441,12 @@
+@@ -2398,10 +2437,12 @@
                FILE* f = file_open(bmp, "rb");
                if (!f) FATAL("Unable to open file", bmp);
  
@@ -269,7 +259,7 @@
  
                tmp = new uint32[(int)w*h];
                
-@@ -2414,9 +2459,12 @@
+@@ -2414,9 +2455,12 @@
                        else
                        {
                                fread(&c, sizeof(c), 1, f);

Modified: packages/trunk/hex-a-hop/debian/patches/misc_errors.patch
===================================================================
--- packages/trunk/hex-a-hop/debian/patches/misc_errors.patch   2007-09-19 
15:38:08 UTC (rev 4245)
+++ packages/trunk/hex-a-hop/debian/patches/misc_errors.patch   2007-09-19 
20:43:02 UTC (rev 4246)
@@ -2,7 +2,7 @@
 ===================================================================
 --- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-10 00:24:40.000000000 +0200
 +++ hex-a-hop.svn/hex_puzzzle.cpp      2007-09-10 00:24:43.000000000 +0200
-@@ -610,8 +610,8 @@
+@@ -614,8 +614,8 @@
        {
                if (currentStage > 0 && numStages > 0)
                {
@@ -33,3 +33,45 @@
                                currentLevelInfo = GetLevelInfo(currentFile);
                                
                                loadPtr = (char*)e->Data();
+Index: hex-a-hop/packfile.h
+===================================================================
+--- hex-a-hop.orig/packfile.h
++++ hex-a-hop/packfile.h
+@@ -29,9 +29,22 @@
+ 
+ struct PackFile1
+ {
++  /* Is it *NOT* save to interpret a byte stream as list of Entries!
++   * The alignment could increase the Entry size on some systems without 
attribute.
++   *
++   * It works on: i386, amd64, mips o32 ABI, powerPC
++   * Maybe it's also compiler dependent ...
++   * 
++   * See also http://c-faq.com/struct/padding.html,
++   * http://c-faq.com/strangeprob/ptralign.html and Debian bug #442854
++   * (Need to refer to a C FAQ in a (so called) C++ program, argh ...)
++   * */
+       class Entry {
+               int32_t len;
+       public:
++              // an array of size 1 (no char* pointer!) is saved after len,
++              // accessing name[0] should (but doesn't always) fit the first 
byte after len
++              // See e.g. http://c-faq.com/aryptr/index.html 
+               char name[1];
+ 
+               Entry* GetNext()
+@@ -51,7 +64,13 @@ struct PackFile1
+               {
+                       return len - strlen(name) - 1;
+               }
+-      };
++      }
++#ifdef __GNUC__
++   __attribute__ ((__packed__));
++       int static_assert1[sizeof(Entry)==5 ? 0 : -1];
++#else
++  int static_assert1[sizeof(Entry)<=8 ? 0 : -1];
++#endif
+ 
+       int numfiles;
+       Entry** e;


_______________________________________________
Pkg-games-commits mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/pkg-games-commits

Reply via email to