Don't truncate bits when converting from 32bit to 24bit. Found by
improved constant bounds checking in GCC 4.2.

--ajs

Index: libmodplug/src/fastmix.cpp
===================================================================
RCS file: /cvsroot/megazeux/megazeux2/contrib/libmodplug/src/fastmix.cpp,v
retrieving revision 1.4
diff -u -d -r1.4 fastmix.cpp
--- libmodplug/src/fastmix.cpp	19 Apr 2007 02:26:02 -0000	1.4
+++ libmodplug/src/fastmix.cpp	19 Apr 2007 02:45:49 -0000
@@ -1886,14 +1886,14 @@
 		else if (n > vumax)
 			vumax = n;
 		p = n >> (8-MIXING_ATTENUATION) ; // 24-bit signed
-#ifdef WORDS_BIGENDIAN
-		buf[i*3+0] = p & 0xFF0000 ;
-		buf[i*3+1] = p & 0x00FF00 ;
-		buf[i*3+2] = p & 0x0000FF ;
+#if defined(WORDS_BIGENDIAN)
+		buf[i*3+0] = (p >> 16) & 0xFF;
+		buf[i*3+1] = (p >> 8) & 0xFF;
+		buf[i*3+2] = p & 0xFF;
 #else
-		buf[i*3+0] = p & 0x0000FF ;
-		buf[i*3+1] = p & 0x00FF00 ;
-		buf[i*3+2] = p & 0xFF0000 ;
+		buf[i*3+0] = p & 0xFF;
+		buf[i*3+1] = (p >> 8) & 0xFF;
+		buf[i*3+2] = (p >> 16) & 0xFF;
 #endif
 	}
 	*lpMin = vumin;
