From 9d5539a215fa4a7a2d50db3650f2d1ee9b6caa88 Mon Sep 17 00:00:00 2001 From: janwas Date: Thu, 28 Apr 2011 17:13:55 +0000 Subject: [PATCH] fix runtime check error - see http://www.wildfiregames.com/forum/index.php?showtopic=14656&pid=218675&st=0&#entry218675 thanks to Yves for reporting this + suggesting the fix. This was SVN commit r9339. --- source/lib/tex/tex_dds.cpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/source/lib/tex/tex_dds.cpp b/source/lib/tex/tex_dds.cpp index 18959fee7d..8f5f72d3a5 100644 --- a/source/lib/tex/tex_dds.cpp +++ b/source/lib/tex/tex_dds.cpp @@ -75,13 +75,13 @@ public: if(dxt == 3) { // table of 4-bit alpha entries - a = access_bit_tbl64(a_bits, pixel_idx, 4); + a = access_bit_tbl(a_bits, pixel_idx, 4); a |= a << 4; // expand to 8 bits (replicate high into low!) } else if(dxt == 5) { // pixel index -> alpha selector (3 bit) -> alpha - const size_t a_selector = access_bit_tbl64(a_bits, pixel_idx, 3); + const size_t a_selector = access_bit_tbl(a_bits, pixel_idx, 3); a = dxt5_a_tbl[a_selector]; } // (dxt == DXT1A) @@ -106,17 +106,10 @@ private: for(int i = 0; i < 3; i++) dst[i] = (c0[i]+c1[i])/2; } - static inline size_t access_bit_tbl(u32 tbl, size_t idx, size_t bit_width) + template + static inline size_t access_bit_tbl(T tbl, size_t idx, size_t bit_width) { - size_t val = tbl >> (idx*bit_width); - val &= bit_mask(bit_width); - return val; - } - - static inline size_t access_bit_tbl64(u64 tbl, size_t idx, size_t bit_width) - { - size_t val = (size_t)(tbl >> (idx*bit_width)); - val &= bit_mask(bit_width); + size_t val = (tbl >> (idx*bit_width)) & bit_mask(bit_width); return val; }