[Scummvm-cvs-logs] CVS: scummvm/sword1 screen.cpp,1.27,1.28

Robert G?ffringmann lavosspawn at users.sourceforge.net
Sat Jan 3 02:50:01 CET 2004


Update of /cvsroot/scummvm/scummvm/sword1
In directory sc8-pr-cvs1:/tmp/cvs-serv15665/sword1

Modified Files:
	screen.cpp 
Log Message:
eriktorbjorn's fix for a crash when sprite were completely outside of the screen

Index: screen.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/screen.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- screen.cpp	28 Dec 2003 23:24:03 -0000	1.27
+++ screen.cpp	3 Jan 2004 10:49:08 -0000	1.28
@@ -709,21 +709,24 @@
 		*pSprWidth = (uint16)sprW;
 	*pSprX = (uint16)sprX;
 	*pSprY = (uint16)sprY;
-	
-	uint16 gridH = (*pSprHeight + SCRNGRID_Y - 1) / SCRNGRID_Y;
-	uint16 gridW = (*pSprWidth + SCRNGRID_X - 1) / SCRNGRID_X;
-	uint16 gridX = sprX / SCRNGRID_X;
-	uint16 gridY = sprY / SCRNGRID_Y;
-	uint8 *gridBuf = _screenGrid + gridX + gridY * _gridSizeX;
-	if (gridX + gridW > _gridSizeX)
-		gridW = _gridSizeX - gridX;
-	if (gridY + gridH > _gridSizeY)
-		gridH = _gridSizeY - gridY;
 
-	for (uint16 cnty = 0; cnty < gridH; cnty++) {
-		for (uint16 cntx = 0; cntx < gridW; cntx++)
-			gridBuf[cntx] |= 0x80;
-		gridBuf += _gridSizeX;
+	if (*pSprWidth && *pSprHeight) {
+		// sprite will be drawn, so mark it in the grid buffer
+		uint16 gridH = (*pSprHeight + SCRNGRID_Y - 1) / SCRNGRID_Y;
+		uint16 gridW = (*pSprWidth + SCRNGRID_X - 1) / SCRNGRID_X;
+		uint16 gridX = sprX / SCRNGRID_X;
+		uint16 gridY = sprY / SCRNGRID_Y;
+		uint8 *gridBuf = _screenGrid + gridX + gridY * _gridSizeX;
+		if (gridX + gridW > _gridSizeX)
+			gridW = _gridSizeX - gridX;
+		if (gridY + gridH > _gridSizeY)
+			gridH = _gridSizeY - gridY;
+
+		for (uint16 cnty = 0; cnty < gridH; cnty++) {
+			for (uint16 cntx = 0; cntx < gridW; cntx++)
+				gridBuf[cntx] |= 0x80;
+			gridBuf += _gridSizeX;
+		}
 	}
 }
 





More information about the Scummvm-git-logs mailing list