aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/resource.cpp
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2009-07-20 20:55:28 +0000
committerWillem Jan Palenstijn2009-07-20 20:55:28 +0000
commitf9208f1bb0e083a4e7ebc30051599cdbfbcf9d26 (patch)
tree459333eb2d5a132a7b921214f9c21c0f803752f9 /engines/scumm/resource.cpp
parentb40dc424b3ec2121b6cc62f3648d014f25583256 (diff)
downloadscummvm-rg350-f9208f1bb0e083a4e7ebc30051599cdbfbcf9d26.tar.gz
scummvm-rg350-f9208f1bb0e083a4e7ebc30051599cdbfbcf9d26.tar.bz2
scummvm-rg350-f9208f1bb0e083a4e7ebc30051599cdbfbcf9d26.zip
Make ScummFile::eos() consistent with Stream::eos().
Remove usage of ioFailed from SCUMM engine. Fix reading up to the end of a SCUMM SubFile. This hopefully fixes #2820957. svn-id: r42632
Diffstat (limited to 'engines/scumm/resource.cpp')
-rw-r--r--engines/scumm/resource.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/engines/scumm/resource.cpp b/engines/scumm/resource.cpp
index 88802a205f..d7ee0a74aa 100644
--- a/engines/scumm/resource.cpp
+++ b/engines/scumm/resource.cpp
@@ -253,10 +253,10 @@ void ScummEngine::readIndexFile() {
if (_game.version <= 5) {
// Figure out the sizes of various resources
- while (!_fileHandle->eos()) {
+ while (true) {
blocktype = _fileHandle->readUint32BE();
itemsize = _fileHandle->readUint32BE();
- if (_fileHandle->ioFailed())
+ if (_fileHandle->eos() || _fileHandle->err())
break;
switch (blocktype) {
case MKID_BE('DOBJ'):
@@ -285,7 +285,6 @@ void ScummEngine::readIndexFile() {
}
_fileHandle->seek(itemsize - 8, SEEK_CUR);
}
- _fileHandle->clearIOFailed();
_fileHandle->seek(0, SEEK_SET);
}
@@ -300,7 +299,7 @@ void ScummEngine::readIndexFile() {
blocktype = _fileHandle->readUint32BE();
itemsize = _fileHandle->readUint32BE();
- if (_fileHandle->ioFailed())
+ if (_fileHandle->eos() || _fileHandle->err())
break;
numblock++;
@@ -689,7 +688,7 @@ int ScummEngine::loadResource(int type, int idx) {
dumpResource("script-", idx, getResourceAddress(rtScript, idx));
}
- if (!_fileHandle->ioFailed()) {
+ if (!_fileHandle->err() && !_fileHandle->eos()) {
return 1;
}