summaryrefslogtreecommitdiff
path: root/graphics/clanlib
diff options
context:
space:
mode:
authorwrstuden <wrstuden@pkgsrc.org>2001-04-02 20:16:42 +0000
committerwrstuden <wrstuden@pkgsrc.org>2001-04-02 20:16:42 +0000
commit98fa822d58b7c094804e724d547c9d9af01a6af7 (patch)
treefdc76418bf79ad3d10636b60382dc154bd59b833 /graphics/clanlib
parent4ed4754c2259f2ad25935626a6cf95d326b82e59 (diff)
downloadpkgsrc-98fa822d58b7c094804e724d547c9d9af01a6af7.tar.gz
Fix big-endian support. Problem was that the targa code would load a
little-endian short into an int, then byteswap the int. That's essentially le32toh() when it should be le16toh(). This ended up in making numbers 0x10000 times too big. Also got rid of a potential unaligned-access.
Diffstat (limited to 'graphics/clanlib')
-rw-r--r--graphics/clanlib/files/patch-sum3
-rw-r--r--graphics/clanlib/patches/patch-ak39
2 files changed, 41 insertions, 1 deletions
diff --git a/graphics/clanlib/files/patch-sum b/graphics/clanlib/files/patch-sum
index 7ebf4115232..b2688c679a3 100644
--- a/graphics/clanlib/files/patch-sum
+++ b/graphics/clanlib/files/patch-sum
@@ -1,4 +1,4 @@
-$NetBSD: patch-sum,v 1.12 2001/03/24 22:47:58 wrstuden Exp $
+$NetBSD: patch-sum,v 1.13 2001/04/02 20:16:42 wrstuden Exp $
MD5 (patch-aa) = 7d4da0626e8296e6c23941dd92b6e6fa
MD5 (patch-ab) = eb18fa66909286b953564dc7449f9428
@@ -10,3 +10,4 @@ MD5 (patch-ag) = d45e2460769ba37f8bfe5c6a24df04ee
MD5 (patch-ah) = cd4f0248f95095820b1aba403633bd7f
MD5 (patch-ai) = 1304e401b59f691223d5e4e55f9c7e52
MD5 (patch-aj) = f5f32e82fa0058dd31939b753d73e9e2
+MD5 (patch-ak) = c1b314456b11c54afaba45259183ec01
diff --git a/graphics/clanlib/patches/patch-ak b/graphics/clanlib/patches/patch-ak
new file mode 100644
index 00000000000..096ec17b453
--- /dev/null
+++ b/graphics/clanlib/patches/patch-ak
@@ -0,0 +1,39 @@
+$NetBSD: patch-ak,v 1.3 2001/04/02 20:16:42 wrstuden Exp $
+--- Sources/Core/SurfaceProviders/provider_targa.cpp.orig Sat Mar 24 10:39:52 2001
++++ Sources/Core/SurfaceProviders/provider_targa.cpp Sat Mar 24 10:46:53 2001
+@@ -151,8 +151,7 @@
+ // read or skip the colormap (rgb-palette)
+ if (colormaptype == 1)
+ {
+- map_length = *((unsigned short *) &file[5]);
+- SWAP_IF_BIG(map_length);
++ map_length = file[5] + 256 * file[6];
+ unsigned char map_size = file[7]>>3;
+
+ if (!read_colormap)
+@@ -194,13 +193,11 @@
+ }
+
+ // read pitch, height and bits-pr-pixel
+- pitch = *((unsigned short *) &file[12]);
+- SWAP_IF_BIG(pitch);
++ pitch = file[12] + 256 * file[13];
+ bounding_left = pitch;
+ bounding_right = 0;
+
+- height = *((unsigned short *) &file[14]);
+- SWAP_IF_BIG(height);
++ height = file[14] + 256 * file[15];
+ bounding_top = height;
+ bounding_bottom = 0;
+
+@@ -456,8 +453,7 @@
+ }
+ else
+ {
+- entry = *((unsigned short *) &file[pos]);
+- SWAP_IF_BIG(entry);
++ entry = file[pos] + 256 * file[pos + 1];
+ pos += 2;
+ }
+