[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