aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Snover2016-06-22 13:05:18 -0500
committerColin Snover2016-06-22 13:05:18 -0500
commita9e2630d4e272c8b776cab54c47943addec7b807 (patch)
tree5f7af39a780cefbba35617a38f53ce7ab8ce9a8c
parent87c5540c2a5b06569545dbc06f81f58e3daafbc6 (diff)
downloadscummvm-rg350-a9e2630d4e272c8b776cab54c47943addec7b807.tar.gz
scummvm-rg350-a9e2630d4e272c8b776cab54c47943addec7b807.tar.bz2
scummvm-rg350-a9e2630d4e272c8b776cab54c47943addec7b807.zip
SCI: Assert on seeks past the end of audio resource bundles
This should never be allowed to happen, but currently does on multi-CD games with different resource bundles on difference CDs (Phant1, PQ:SWAT, GK2) because the resource manager does not yet have the ability to handle this situation.
-rw-r--r--engines/sci/resource_audio.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/engines/sci/resource_audio.cpp b/engines/sci/resource_audio.cpp
index 5aeff81b77..5ab443a16d 100644
--- a/engines/sci/resource_audio.cpp
+++ b/engines/sci/resource_audio.cpp
@@ -869,6 +869,7 @@ void WaveResourceSource::loadResource(ResourceManager *resMan, Resource *res) {
if (!fileStream)
return;
+ assert(fileStream->size() == -1 || res->_fileOffset < fileStream->size());
fileStream->seek(res->_fileOffset, SEEK_SET);
res->loadFromWaveFile(fileStream);
if (_resourceFile)
@@ -922,6 +923,7 @@ void AudioVolumeResourceSource::loadResource(ResourceManager *resMan, Resource *
break;
}
} else {
+ assert(fileStream->size() == -1 || res->_fileOffset < fileStream->size());
// original file, directly seek to given offset and get SCI1/SCI1.1 audio resource
fileStream->seek(res->_fileOffset, SEEK_SET);
}