[Scummvm-cvs-logs] CVS: scummvm/queen credits.cpp,1.4,1.5 logic.cpp,1.178,1.179 resource.cpp,1.40,1.41 resource.h,1.33,1.34

Gregory Montoir cyx at users.sourceforge.net
Mon Jan 19 14:32:03 CET 2004


Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1:/tmp/cvs-serv20755/queen

Modified Files:
	credits.cpp logic.cpp resource.cpp resource.h 
Log Message:
*temporary* fix for LineReader to handle files not terminated by an empty string (*.crd)

Index: credits.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/credits.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- credits.cpp	10 Jan 2004 12:56:07 -0000	1.4
+++ credits.cpp	19 Jan 2004 22:31:21 -0000	1.5
@@ -31,7 +31,8 @@
 Credits::Credits(QueenEngine *vm, const char* filename) : 
 	_vm(vm), _running(true), _count(0), _pause(0), _justify(0), _fontSize(0), _color(0), _zone(0) {
 	_credits = new LineReader(
-			(char*)_vm->resource()->loadFile(filename));
+		(char *)_vm->resource()->loadFile(filename),
+		_vm->resource()->fileSize(filename));
 }
 
 Credits::~Credits() {

Index: logic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.cpp,v
retrieving revision 1.178
retrieving revision 1.179
diff -u -d -r1.178 -r1.179
--- logic.cpp	16 Jan 2004 15:51:23 -0000	1.178
+++ logic.cpp	19 Jan 2004 22:31:21 -0000	1.179
@@ -187,7 +187,9 @@
 
 	// Step 2 : read queen2.jas and grab all description texts
 
-	_queen2jas = new LineReader((char*)_vm->resource()->loadFile("QUEEN2.JAS"));
+	_queen2jas = new LineReader(
+		(char *)_vm->resource()->loadFile("QUEEN2.JAS"),
+		_vm->resource()->fileSize("QUEEN2.JAS"));
 	
 	_objDescription = new char*[_numDescriptions + 1];
 	_objDescription[0] = 0;

Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/resource.cpp,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- resource.cpp	12 Jan 2004 13:40:01 -0000	1.40
+++ resource.cpp	19 Jan 2004 22:31:21 -0000	1.41
@@ -246,20 +246,22 @@
 	return _resourceFile;
 }
 
-LineReader::LineReader(char *buffer) : _buffer(buffer), _current(0) {
+LineReader::LineReader(char *buffer, uint32 bufsize) : _buffer(buffer), _bufSize(bufsize), _current(0) {
 }
 
 LineReader::~LineReader() {
 	delete[] _buffer;
 }
 
-char* LineReader::nextLine() {
+char *LineReader::nextLine() {
 	char *startOfLine = _buffer + _current;
 	char *curPos = startOfLine;
-	while (*curPos++ != 0xd) ;
-	*(curPos - 1) = '\0';     // '\r'
-	*curPos = '\0';           // '\n'
-	_current = (curPos - _buffer) + 1;
+	while (curPos < _buffer + _bufSize && *curPos++ != 0xd) ;
+	*(curPos - 1) = '\0'; // '\r'
+	if (curPos < _buffer + _bufSize) {
+		*curPos = '\0'; // '\n'
+		_current = (curPos - _buffer) + 1;
+	}
 	return startOfLine;
 }
 

Index: resource.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/resource.h,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- resource.h	12 Jan 2004 13:40:01 -0000	1.33
+++ resource.h	19 Jan 2004 22:31:21 -0000	1.34
@@ -64,12 +64,13 @@
 class LineReader {
 
 public:
-	LineReader(char *buffer);
+	LineReader(char *buffer, uint32 bufsize);
 	~LineReader();
-	char* nextLine();
+	char *nextLine();
 
 private:
 	char *_buffer;
+	uint32 _bufSize;
 	int _current;
 };
 





More information about the Scummvm-git-logs mailing list