[Scummvm-cvs-logs] CVS: scummvm/scumm string.cpp,1.308,1.309

kirben kirben at users.sourceforge.net
Thu Nov 3 02:07:36 CET 2005


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27614/scumm

Modified Files:
	string.cpp 
Log Message:

Add safety check for charset codes in HE72+ games.
Since charset codes and characters share some values.


Index: string.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
retrieving revision 1.308
retrieving revision 1.309
diff -u -d -r1.308 -r1.309
--- string.cpp	3 Nov 2005 02:24:53 -0000	1.308
+++ string.cpp	3 Nov 2005 10:06:17 -0000	1.309
@@ -222,7 +222,8 @@
 	uint32 talk_sound_b = 0;
 	int i, c;
 	char value[32];
-	bool endLoop = false;
+	bool endLoop = false, ;
+	bool endText = false;
 	byte *buffer = _charsetBuffer + _charsetBufPos;
 	while (!endLoop) {
 		c = *buffer++;
@@ -257,7 +258,7 @@
 		case 104:
 			_haveMsg = 0;
 			_keepText = true;
-			endLoop = true;
+			endLoop = endText = true;
 			break;
 		case 110:
 			c = 13; // new line
@@ -280,7 +281,7 @@
 		case 119:
 			_haveMsg = 0xFF;
 			_keepText = false;
-			endLoop = true;
+			endLoop = endText = true;
 			break;
 		default:
 			error("handleNextCharsetCode: invalid code %d", c);
@@ -288,7 +289,7 @@
 	}
 	_charsetBufPos = buffer - _charsetBuffer;
 	*code = c;
-	return (c != 104 && c != 119);
+	return (endText == 0);
 }
 #endif
 
@@ -465,7 +466,7 @@
 			*subtitleLine++ = c;
 			*subtitleLine = '\0';
 #endif
-	} else {
+		} else {
 			if (_version <= 3) {
 				_charset->printChar(c);
 			} else {





More information about the Scummvm-git-logs mailing list