aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/seg_manager.cpp
diff options
context:
space:
mode:
authorMatthew Hoops2009-12-31 05:11:58 +0000
committerMatthew Hoops2009-12-31 05:11:58 +0000
commit7d131627fe6296ea4ce46db62900e4800b6b6816 (patch)
tree9391e8a616819ffc2b0bbb844b9abfdf86cf5c0e /engines/sci/engine/seg_manager.cpp
parenteb2e45781749c31b2bd637fb40b6e0315d2601b6 (diff)
downloadscummvm-rg350-7d131627fe6296ea4ce46db62900e4800b6b6816.tar.gz
scummvm-rg350-7d131627fe6296ea4ce46db62900e4800b6b6816.tar.bz2
scummvm-rg350-7d131627fe6296ea4ce46db62900e4800b6b6816.zip
Overload the = operator for SciArray which fixes the setType errors in GK1. Some other cleanup too. GK1 can now access the restore menu and get a bit further in the game (until a segfault in the Decompressor code).
svn-id: r46789
Diffstat (limited to 'engines/sci/engine/seg_manager.cpp')
-rw-r--r--engines/sci/engine/seg_manager.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp
index 755e44c543..4983d9b347 100644
--- a/engines/sci/engine/seg_manager.cpp
+++ b/engines/sci/engine/seg_manager.cpp
@@ -1299,6 +1299,7 @@ void SegManager::freeArray(reg_t addr) {
if (!arrayTable->isValidEntry(addr.offset))
error("Attempt to use non-array %04x:%04x as array", PRINT_REG(addr));
+ arrayTable->_table[addr.offset].destroy();
arrayTable->freeEntry(addr.offset);
}
@@ -1338,6 +1339,7 @@ void SegManager::freeString(reg_t addr) {
if (!stringTable->isValidEntry(addr.offset))
error("Attempt to use non-string %04x:%04x as string", PRINT_REG(addr));
+ stringTable->_table[addr.offset].destroy();
stringTable->freeEntry(addr.offset);
}