--- ./code/game/q_shared.c.orig	Wed May 31 18:55:11 2006
+++ ./code/game/q_shared.c	Wed May 31 19:06:32 2006
@@ -58,13 +58,20 @@
 COM_StripExtension
 ============
 */
-void COM_StripExtension( const char *in, char *out ) {
-	while ( *in && *in != '.' ) {
-		*out++ = *in++;
-	}
-	*out = 0;
-}
+void COM_StripExtension( const char *in, char *out, int destsize ) {
+	int	length;
 
+	Q_strncpyz(out, in, destsize);
+
+	length = strlen(out)-1;
+	while (length > 0 && out[length] != '.') {
+		length--;
+		if (out[length] == '/')
+			return;		// no extension
+	}
+	if (length)
+		out[length] = 0;
+}
 
 /*
 ==================
@@ -99,29 +106,29 @@
 
 ============================================================================
 */
-/*
+
 // can't just use function pointers, or dll linkage can
 // mess up when qcommon is included in multiple places
-static short	(*_BigShort) (short l);
-static short	(*_LittleShort) (short l);
-static int		(*_BigLong) (int l);
-static int		(*_LittleLong) (int l);
+static int16_t	(*_BigShort) (int16_t l);
+static int16_t	(*_LittleShort) (int16_t l);
+static int32_t		(*_BigLong) (int32_t l);
+static int32_t		(*_LittleLong) (int32_t l);
 static qint64	(*_BigLong64) (qint64 l);
 static qint64	(*_LittleLong64) (qint64 l);
 static float	(*_BigFloat) (const float *l);
 static float	(*_LittleFloat) (const float *l);
 
-short	BigShort(short l){return _BigShort(l);}
-short	LittleShort(short l) {return _LittleShort(l);}
-int		BigLong (int l) {return _BigLong(l);}
-int		LittleLong (int l) {return _LittleLong(l);}
-qint64 	BigLong64 (qint64 l) {return _BigLong64(l);}
-qint64 	LittleLong64 (qint64 l) {return _LittleLong64(l);}
-float	BigFloat (const float *l) {return _BigFloat(l);}
-float	LittleFloat (const float *l) {return _LittleFloat(l);}
-*/
+int16_t	BigShort(int16_t l){return _BigShort(l);}
+int16_t	LittleShort(int16_t l) {return _LittleShort(l);}
+int32_t	BigLong (int32_t l) {return _BigLong(l);}
+int32_t	LittleLong (int32_t l) {return _LittleLong(l);}
+qint64	BigLong64 (qint64 l) {return _BigLong64(l);}
+qint64	LittleLong64 (qint64 l) {return _LittleLong64(l);}
+float	BigFloat (float l) {return _BigFloat(&l);}
+float	LittleFloat (float l) {return _LittleFloat(&l);}
 
-short   ShortSwap (short l)
+
+int16_t	ShortSwap (int16_t l)
 {
 	byte    b1,b2;
 
@@ -131,12 +138,12 @@
 	return (b1<<8) + b2;
 }
 
-short	ShortNoSwap (short l)
+int16_t	ShortNoSwap (int16_t l)
 {
 	return l;
 }
 
-int    LongSwap (int l)
+int32_t	LongSwap (int32_t l)
 {
 	byte    b1,b2,b3,b4;
 
@@ -145,15 +152,15 @@
 	b3 = (l>>16)&255;
 	b4 = (l>>24)&255;
 
-	return ((int)b1<<24) + ((int)b2<<16) + ((int)b3<<8) + b4;
+	return ((int32_t)b1<<24) + ((int32_t)b2<<16) + ((int32_t)b3<<8) + b4;
 }
 
-int	LongNoSwap (int l)
+int32_t	LongNoSwap (int32_t l)
 {
 	return l;
 }
 
-qint64 Long64Swap (qint64 ll)
+qint64	Long64Swap (qint64 ll)
 {
 	qint64	result;
 
@@ -199,7 +206,7 @@
 Swap_Init
 ================
 */
-/*
+
 void Swap_Init (void)
 {
 	byte	swaptest[2] = {1,0};
@@ -229,7 +236,7 @@
 	}
 
 }
-*/
+
 
 /*
 ============================================================================
