[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