diff options
Diffstat (limited to 'engines/sci/engine/seg_manager.cpp')
-rw-r--r-- | engines/sci/engine/seg_manager.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index b464438553..6a03a959b3 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -612,8 +612,12 @@ static inline char getChar(const SegmentRef &ref, uint offset) { reg_t val = ref.reg[offset / 2]; + // segment 0xFFFF means that the scripts are using uninitialized temp-variable space + // we can safely ignore this, if it isn't one of the first 2 chars. + // foreign lsl3 uses kFileIO(readraw) and then immediately uses kReadNumber right at the start if (val.segment != 0) - warning("Attempt to read character from non-raw data"); + if ((offset > 1) && val.segment == 0xFFFF) + warning("Attempt to read character from non-raw data"); return (offset & 1 ? val.offset >> 8 : val.offset & 0xff); } |