aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/segment.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/engine/segment.cpp')
-rw-r--r--engines/sci/engine/segment.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/engines/sci/engine/segment.cpp b/engines/sci/engine/segment.cpp
index 11331f0599..fffa7f4d7e 100644
--- a/engines/sci/engine/segment.cpp
+++ b/engines/sci/engine/segment.cpp
@@ -253,10 +253,10 @@ SegmentRef ArrayTable::dereference(reg_t pointer) {
SegmentRef ret;
SciArray &array = at(pointer.getOffset());
- const bool isRaw = array.getType() != kArrayTypeID;
+ const bool isRaw = array.getType() == kArrayTypeByte || array.getType() == kArrayTypeString;
ret.isRaw = isRaw;
- ret.maxSize = isRaw ? array.byteSize() : array.size();
+ ret.maxSize = array.byteSize();
if (isRaw) {
ret.raw = (byte *)array.getRawData();
} else {
@@ -274,7 +274,7 @@ Common::Array<reg_t> ArrayTable::listAllOutgoingReferences(reg_t addr) const {
}
SciArray &array = const_cast<SciArray &>(at(addr.getOffset()));
- if (array.getType() == kArrayTypeID) {
+ if (array.getType() == kArrayTypeID || array.getType() == kArrayTypeInt16) {
for (uint16 i = 0; i < array.size(); ++i) {
const reg_t value = array.getAsID(i);
if (value.isPointer()) {