diff options
author | Andre Heider | 2009-02-26 21:17:53 +0000 |
---|---|---|
committer | Andre Heider | 2009-02-26 21:17:53 +0000 |
commit | 2d1fd81f90ca0583d1e28b57926079cec3d6c48c (patch) | |
tree | 8d7736dd41b254e979e26666db2a2fcd39925ae2 /engines/sci/engine | |
parent | f8648767e4882de9adb8f23c9bae8d5146dc3fd9 (diff) | |
download | scummvm-rg350-2d1fd81f90ca0583d1e28b57926079cec3d6c48c.tar.gz scummvm-rg350-2d1fd81f90ca0583d1e28b57926079cec3d6c48c.tar.bz2 scummvm-rg350-2d1fd81f90ca0583d1e28b57926079cec3d6c48c.zip |
start out with an empty array of file handles, so the Enginestates matches between startup and restart. really check its size before accessing it (fixes LSL3 restart)
svn-id: r38915
Diffstat (limited to 'engines/sci/engine')
-rw-r--r-- | engines/sci/engine/game.cpp | 2 | ||||
-rw-r--r-- | engines/sci/engine/kfile.cpp | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/engines/sci/engine/game.cpp b/engines/sci/engine/game.cpp index 250610dfb7..03fbb74266 100644 --- a/engines/sci/engine/game.cpp +++ b/engines/sci/engine/game.cpp @@ -528,8 +528,6 @@ EngineState::EngineState() { kernel_opt_flags = 0; - _fileHandles.resize(5); - dirseeker = 0; execution_stack = 0; diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp index 7638bab28a..4c615ff6b4 100644 --- a/engines/sci/engine/kfile.cpp +++ b/engines/sci/engine/kfile.cpp @@ -379,12 +379,16 @@ void file_open(EngineState *s, char *filename, int mode) { return; } - uint retval = 1; // Ignore _fileHandles[0] + uint retval = 0; while ((retval < s->_fileHandles.size()) && s->_fileHandles[retval]._file) retval++; - if (retval == s->_fileHandles.size()) { // Hit size limit => Allocate more space - s->_fileHandles.resize(s->_fileHandles.size() + 1); + // Ignore _fileHandles[0] + if (retval < 1) + retval = 1; + + if (retval >= s->_fileHandles.size()) { // Hit size limit => Allocate more space + s->_fileHandles.resize(retval + 1); } s->_fileHandles[retval]._file = file; |