diff options
-rw-r--r-- | engines/sherlock/scene.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp index 3cc84936b0..ec7831820a 100644 --- a/engines/sherlock/scene.cpp +++ b/engines/sherlock/scene.cpp @@ -295,16 +295,19 @@ bool Scene::loadScene(const Common::String &filename) { } // Load in cAnim list - Common::SeekableReadStream *canimStream = _lzwMode ? - decompressLZ(*rrmStream, 65 * bgHeader._numcAnimations) : - rrmStream->readStream(65 * bgHeader._numcAnimations); + _cAnim.clear(); + if (bgHeader._numcAnimations) { + Common::SeekableReadStream *canimStream = _lzwMode ? + decompressLZ(*rrmStream, 65 * bgHeader._numcAnimations) : + rrmStream->readStream(65 * bgHeader._numcAnimations); - _cAnim.resize(bgHeader._numcAnimations); - for (uint idx = 0; idx < _cAnim.size(); ++idx) - _cAnim[idx].synchronize(*canimStream); + _cAnim.resize(bgHeader._numcAnimations); + for (uint idx = 0; idx < _cAnim.size(); ++idx) + _cAnim[idx].synchronize(*canimStream); + + delete canimStream; + } - delete canimStream; - // Read in the room bounding areas int size = rrmStream->readUint16LE(); Common::SeekableReadStream *boundsStream = !_lzwMode ? rrmStream : |