diff options
Diffstat (limited to 'engines/sci')
-rw-r--r-- | engines/sci/resource.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index 3651fe9e91..9b9e56b6d7 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -282,14 +282,18 @@ void ResourceManager::checkIfAudioVolumeIsCompressed(ResourceSource *source) { // Detected a compressed audio volume source->audioCompressionType = compressionType; // Now read the whole offset mapping table for later usage - uint32 recordCount = file->readUint32LE(); + int32 recordCount = file->readUint32LE(); if (!recordCount) error("compressed audio volume doesn't contain any entries!"); - source->audioCompressionOffsetMapping = new int32[(recordCount + 1) * 2]; - file->read(source->audioCompressionOffsetMapping, recordCount * 4 * 2); + int32 *offsetMapping = new int32[(recordCount + 1) * 2]; + source->audioCompressionOffsetMapping = offsetMapping; + for (int recordNo = 0; recordNo < recordCount; recordNo++) { + *offsetMapping++ = file->readUint32LE(); + *offsetMapping++ = file->readUint32LE(); + } // Put ending zero - source->audioCompressionOffsetMapping[recordCount * 2] = 0; - source->audioCompressionOffsetMapping[recordCount * 2 + 1] = file->size(); + *offsetMapping++ = 0; + *offsetMapping++ = file->size(); } } |