From 24a9dc848098dae2124456de239e9ec63a31471e Mon Sep 17 00:00:00 2001 From: Scott Thomas Date: Sun, 23 Aug 2009 14:54:56 +0000 Subject: T7G: Load VDX frame chunks into a MemoryStream rather than streaming straight from disk (Fix #2839528) svn-id: r43671 --- engines/groovie/vdx.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'engines/groovie') diff --git a/engines/groovie/vdx.cpp b/engines/groovie/vdx.cpp index bee84b4adb..0bc6acb1c0 100644 --- a/engines/groovie/vdx.cpp +++ b/engines/groovie/vdx.cpp @@ -118,6 +118,7 @@ uint16 VDXPlayer::loadInternal() { bool VDXPlayer::playFrameInternal() { byte currRes = 0x80; + Common::ReadStream *vdxData = 0; while (!_file->eos() && currRes == 0x80) { currRes = _file->readByte(); @@ -130,7 +131,9 @@ bool VDXPlayer::playFrameInternal() { uint8 lengthbits = _file->readByte(); // Read the chunk data and decompress if needed - Common::ReadStream *vdxData = new Common::SubReadStream(_file, compSize); + if (compSize) + vdxData = _file->readStream(compSize); + if (lengthmask && lengthbits) { Common::ReadStream *decompData = new LzssReadStream(vdxData, lengthmask, lengthbits); delete vdxData; @@ -157,7 +160,9 @@ bool VDXPlayer::playFrameInternal() { default: error("Groovie::VDX: Invalid resource type: %d", currRes); } - delete vdxData; + if (vdxData) + delete vdxData; + vdxData = 0; } // Wait until the current frame can be shown -- cgit v1.2.3