diff options
author | wrstuden <wrstuden> | 2001-04-02 20:16:42 +0000 |
---|---|---|
committer | wrstuden <wrstuden> | 2001-04-02 20:16:42 +0000 |
commit | df9e010396a1eed172b475c553cdab7e70d0f938 (patch) | |
tree | fdc76418bf79ad3d10636b60382dc154bd59b833 /graphics/clanlib | |
parent | 0ff1b629e1f0e932c3d7fe38c9d79ff8600ec93e (diff) | |
download | pkgsrc-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-sum | 3 | ||||
-rw-r--r-- | graphics/clanlib/patches/patch-ak | 39 |
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; + } + |