diff options
-rw-r--r-- | engines/sci/engine/kscripts.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp index 9fccceebbe..d91662a695 100644 --- a/engines/sci/engine/kscripts.cpp +++ b/engines/sci/engine/kscripts.cpp @@ -175,6 +175,11 @@ reg_t kClone(EngineState *s, int argc, reg_t *argv) { // extend the internal storage size. if (infoSelector & kInfoFlagClone) parentObj = s->_segMan->getObject(parentAddr); + + // HACK: Since the info selector can't be read correctly for SCI3 yet, + // always refresh the parent object pointer + if (getSciVersion() == SCI_VERSION_3) + parentObj = s->_segMan->getObject(parentAddr); *cloneObj = *parentObj; @@ -216,6 +221,11 @@ reg_t kDisposeClone(EngineState *s, int argc, reg_t *argv) { if ((infoSelector & 3) == kInfoFlagClone) object->markAsFreed(); + // HACK: Since the info selector can't be read correctly for SCI3 yet, + // always mark the object as freed + if (getSciVersion() == SCI_VERSION_3) + object->markAsFreed(); + return s->r_acc; } |