diff options
| -rw-r--r-- | engines/gob/script.cpp | 21 | ||||
| -rw-r--r-- | engines/gob/script.h | 8 | 
2 files changed, 17 insertions, 12 deletions
| diff --git a/engines/gob/script.cpp b/engines/gob/script.cpp index e4808cf9ce..de7f0095a4 100644 --- a/engines/gob/script.cpp +++ b/engines/gob/script.cpp @@ -52,8 +52,11 @@ Script::~Script() {  	delete _parser;  } -uint32 Script::read(byte *data, uint32 size) { -	uint32 toRead = MIN<uint32>(size, _totSize - (_totPtr - _totData)); +uint32 Script::read(byte *data, int32 size) { +	int32 toRead = MIN<int32>(size, _totSize - (_totPtr - _totData)); + +	if (toRead < 1) +		return 0;  	memcpy(data, _totPtr, toRead);  	_totPtr += toRead; @@ -61,15 +64,17 @@ uint32 Script::read(byte *data, uint32 size) {  	return toRead;  } -uint32 Script::peek(byte *data, uint32 size, int32 offset) const { +uint32 Script::peek(byte *data, int32 size, int32 offset) const {  	int32 totOffset = ((_totPtr + offset) - _totData); -	if (totOffset < 0) +	if (totOffset < 1)  		return 0;  	if (((uint32) totOffset) >= _totSize)  		return 0; -	uint32 toPeek = MIN<uint32>(size, _totSize - totOffset); +	int32 toPeek = MIN<int32>(size, _totSize - totOffset); +	if (toPeek < 1) +		return 0;  	memcpy(data, _totPtr + offset, toPeek); @@ -110,13 +115,13 @@ bool Script::seek(int32 offset, int whence) {  	return true;  } -bool Script::skip(uint32 offset) { +bool Script::skip(int32 offset) {  	return seek(offset, SEEK_CUR);  } -uint32 Script::getOffset(byte *ptr) { +int32 Script::getOffset(byte *ptr) {  	if (!_totData) -		return 0; +		return -1;  	return ptr - _totData;  } diff --git a/engines/gob/script.h b/engines/gob/script.h index 28d8483272..52f322f1f4 100644 --- a/engines/gob/script.h +++ b/engines/gob/script.h @@ -40,9 +40,9 @@ public:  	~Script();  	/** Read data and move the pointer accordingly. */ -	uint32 read(byte *data, uint32 size); +	uint32 read(byte *data, int32 size);  	/** Read data (from an optional offset) without moving the pointer. */ -	uint32 peek(byte *data, uint32 size, int32 offset = 0) const; +	uint32 peek(byte *data, int32 size, int32 offset = 0) const;  	// Stream properties  	int32 pos() const; @@ -50,7 +50,7 @@ public:  	// Stream seeking  	bool seek(int32 offset, int whence = SEEK_SET); -	bool skip(uint32 offset); +	bool skip(int32 offset);  	// Reading data  	byte   readByte  (); @@ -89,7 +89,7 @@ public:  	char *getResultStr();  	/** Returns the offset the specified pointer is within the script data. */ -	uint32 getOffset(byte *ptr); +	int32 getOffset(byte *ptr);  	/** Returns the raw data pointer. */  	byte *getData(); | 
