From 0f214e4c9d72d088ccf088496710b20576ec73f5 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 8 Mar 2014 08:59:10 -0500 Subject: [PATCH] MADS: Fix for loading animation data --- engines/mads/animation.cpp | 7 ++++--- engines/mads/compression.h | 10 ++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/engines/mads/animation.cpp b/engines/mads/animation.cpp index 35086316907..90f1331d92c 100644 --- a/engines/mads/animation.cpp +++ b/engines/mads/animation.cpp @@ -207,10 +207,11 @@ void Animation::load(MSurface &depthSurface, InterfaceSurface &interfaceSurface, for (int i = 0; i < _header._spriteSetsCount; ++i) _spriteListIndexes.push_back(-1); + int streamIndex = 1; _messages.clear(); if (_header._messagesCount > 0) { // Chunk 2: Following is a list of any messages for the animation - Common::SeekableReadStream *msgStream = madsPack.getItemStream(1); + Common::SeekableReadStream *msgStream = madsPack.getItemStream(streamIndex++); for (int i = 0; i < _header._messagesCount; ++i) { AnimMessage rec; @@ -224,7 +225,7 @@ void Animation::load(MSurface &depthSurface, InterfaceSurface &interfaceSurface, _frameEntries.clear(); if (_header._frameEntriesCount > 0) { // Chunk 3: animation frame info - Common::SeekableReadStream *frameStream = madsPack.getItemStream(2); + Common::SeekableReadStream *frameStream = madsPack.getItemStream(streamIndex++); for (int i = 0; i < _header._frameEntriesCount; i++) { AnimFrameEntry rec; @@ -238,7 +239,7 @@ void Animation::load(MSurface &depthSurface, InterfaceSurface &interfaceSurface, _miscEntries.clear(); if (_header._miscEntriesCount > 0) { // Chunk 4: Misc Data - Common::SeekableReadStream *miscStream = madsPack.getItemStream(3); + Common::SeekableReadStream *miscStream = madsPack.getItemStream(streamIndex++); for (int i = 0; i < _header._miscEntriesCount; ++i) { AnimMiscEntry rec; diff --git a/engines/mads/compression.h b/engines/mads/compression.h index bf690dcc464..aa1f0d9bdca 100644 --- a/engines/mads/compression.h +++ b/engines/mads/compression.h @@ -54,9 +54,15 @@ public: ~MadsPack(); int getCount() const { return _count; } - MadsPackEntry &getItem(int index) const { return _items[index]; } - MadsPackEntry &operator[](int index) const { return _items[index]; } + MadsPackEntry &getItem(int index) const { + assert(index < _count); + return _items[index]; } + MadsPackEntry &operator[](int index) const { + assert(index < _count); + return _items[index]; + } Common::MemoryReadStream *getItemStream(int index) { + assert(index < _count); return new Common::MemoryReadStream(_items[index].data, _items[index].size, DisposeAfterUse::NO); }