r206 - trunk/code/renderer

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Nov 1 14:44:36 EST 2005


Author: ludwig
Date: 2005-11-01 14:44:36 -0500 (Tue, 01 Nov 2005)
New Revision: 206

Modified:
   trunk/code/renderer/tr_image.c
Log:
use memcpy to fix use of misaligned data


Modified: trunk/code/renderer/tr_image.c
===================================================================
--- trunk/code/renderer/tr_image.c	2005-11-01 16:05:06 UTC (rev 205)
+++ trunk/code/renderer/tr_image.c	2005-11-01 19:44:36 UTC (rev 206)
@@ -1148,26 +1148,29 @@
 
 	buf_p = buffer;
 
-	targa_header.id_length = *buf_p++;
-	targa_header.colormap_type = *buf_p++;
-	targa_header.image_type = *buf_p++;
+	targa_header.id_length = buf_p[0];
+	targa_header.colormap_type = buf_p[1];
+	targa_header.image_type = buf_p[2];
 	
-	targa_header.colormap_index = LittleShort ( *(short *)buf_p );
-	buf_p += 2;
-	targa_header.colormap_length = LittleShort ( *(short *)buf_p );
-	buf_p += 2;
-	targa_header.colormap_size = *buf_p++;
-	targa_header.x_origin = LittleShort ( *(short *)buf_p );
-	buf_p += 2;
-	targa_header.y_origin = LittleShort ( *(short *)buf_p );
-	buf_p += 2;
-	targa_header.width = LittleShort ( *(short *)buf_p );
-	buf_p += 2;
-	targa_header.height = LittleShort ( *(short *)buf_p );
-	buf_p += 2;
-	targa_header.pixel_size = *buf_p++;
-	targa_header.attributes = *buf_p++;
+	memcpy(&targa_header.colormap_index, &buf_p[3], 2);
+	memcpy(&targa_header.colormap_length, &buf_p[5], 2);
+	targa_header.colormap_size = buf_p[8];
+	memcpy(&targa_header.x_origin, &buf_p[9], 2);
+	memcpy(&targa_header.y_origin, &buf_p[11], 2);
+	memcpy(&targa_header.width, &buf_p[13], 2);
+	memcpy(&targa_header.height, &buf_p[15], 2);
+	targa_header.pixel_size = buf_p[16];
+	targa_header.attributes = buf_p[17];
 
+	targa_header.colormap_index = LittleShort(targa_header.colormap_index);
+	targa_header.colormap_length = LittleShort(targa_header.colormap_length);
+	targa_header.x_origin = LittleShort(targa_header.x_origin);
+	targa_header.y_origin = LittleShort(targa_header.y_origin);
+	targa_header.width = LittleShort(targa_header.width);
+	targa_header.height = LittleShort(targa_header.height);
+
+	buf_p += 18;
+
 	if (targa_header.image_type!=2 
 		&& targa_header.image_type!=10
 		&& targa_header.image_type != 3 ) 




More information about the quake3-commits mailing list