diff options
-rw-r--r-- | graphics/video/smk_player.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/graphics/video/smk_player.cpp b/graphics/video/smk_player.cpp index 96ccd8e5e8..2ea9fe7e44 100644 --- a/graphics/video/smk_player.cpp +++ b/graphics/video/smk_player.cpp @@ -482,8 +482,10 @@ bool SMKPlayer::loadFile(const char *fileName) { Common::Array<byte> huffmanTrees; huffmanTrees.resize(_header.treesSize + 2); _fileStream->read(&huffmanTrees[0], _header.treesSize); + huffmanTrees[_header.treesSize] = 0; + huffmanTrees[_header.treesSize + 1] = 0; - BitStream bs(&huffmanTrees[0], _header.treesSize + 2); + BitStream bs(&huffmanTrees[0], _header.treesSize); _MMapTree = new BigHuffmanTree(bs); _MClrTree = new BigHuffmanTree(bs); @@ -607,8 +609,10 @@ bool SMKPlayer::decodeNextFrame() { _frameData = (byte *)malloc(frameDataSize + 2); _fileStream->read(_frameData, frameDataSize); + _frameData[frameDataSize] = 0; + _frameData[frameDataSize + 1] = 0; - BitStream bs(_frameData, frameDataSize + 2); + BitStream bs(_frameData, frameDataSize); _MMapTree->reset(); _MClrTree->reset(); @@ -757,7 +761,7 @@ bool SMKPlayer::decodeNextFrame() { void SMKPlayer::queueCompressedBuffer(byte *buffer, uint32 bufferSize, uint32 unpackedSize, int streamNum) { - BitStream audioBS(buffer, bufferSize + 2); + BitStream audioBS(buffer, bufferSize); bool dataPresent = audioBS.getBit(); if (!dataPresent) |