summaryrefslogtreecommitdiff
path: root/graphics/clanlib
diff options
context:
space:
mode:
authorwrstuden <wrstuden>2001-04-02 20:16:42 +0000
committerwrstuden <wrstuden>2001-04-02 20:16:42 +0000
commitdf9e010396a1eed172b475c553cdab7e70d0f938 (patch)
treefdc76418bf79ad3d10636b60382dc154bd59b833 /graphics/clanlib
parent0ff1b629e1f0e932c3d7fe38c9d79ff8600ec93e (diff)
downloadpkgsrc-df9e010396a1eed172b475c553cdab7e70d0f938.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;
+ }
+