diff options
| -rw-r--r-- | engines/groovie/vdx.cpp | 9 | 
1 files changed, 7 insertions, 2 deletions
| 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 | 
