diff options
-rw-r--r-- | engines/scumm/smush/chunk.cpp | 8 | ||||
-rw-r--r-- | engines/scumm/smush/chunk.h | 1 |
2 files changed, 8 insertions, 1 deletions
diff --git a/engines/scumm/smush/chunk.cpp b/engines/scumm/smush/chunk.cpp index a1c87fb912..7f409bce20 100644 --- a/engines/scumm/smush/chunk.cpp +++ b/engines/scumm/smush/chunk.cpp @@ -44,7 +44,8 @@ const char *Chunk::ChunkString(Chunk::type t) { BaseChunk::BaseChunk() : _type(0), _size(0), - _curPos(0) { + _curPos(0), + _name("") { } bool BaseChunk::eof() const { @@ -81,7 +82,11 @@ bool BaseChunk::seek(int32 delta, seek_type dir) { _curPos = (uint32)(_size + delta); break; } + if (_curPos > _size) { + if (g_scumm->_insaneRunning) { + warning("Looks like you compressed file %s in wrong way. It has FLU index which was not updated", _name.c_str()); + } error("invalid seek request : %d > %d (delta == %d)", _curPos, _size, delta); } return true; @@ -109,6 +114,7 @@ FileChunk::FileChunk(const Common::String &name, int offset) { _size = _data->readUint32BE(); _offset = _data->pos(); _curPos = 0; + _name = name; } FileChunk::~FileChunk() { diff --git a/engines/scumm/smush/chunk.h b/engines/scumm/smush/chunk.h index 9c910dfb23..7d5b1926fa 100644 --- a/engines/scumm/smush/chunk.h +++ b/engines/scumm/smush/chunk.h @@ -57,6 +57,7 @@ protected: Chunk::type _type; uint32 _size; uint32 _curPos; + Common::String _name; BaseChunk(); |