diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index 1fd80d2cf78..fb2c60cdb6d 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -685,6 +685,9 @@ int Kernel::findRegType(reg_t reg) { if (!reg.segment) return reg.offset ? KSIG_ARITHMETIC : KSIG_ARITHMETIC | KSIG_NULL; + if (reg.segment == 0xFFFF) + return KSIG_UNINITIALIZED; + // Otherwise it's an object SegmentObj *mobj = _segMan->getSegmentObj(reg.segment); if (!mobj) @@ -728,13 +731,14 @@ struct SignatureDebugType { }; static const SignatureDebugType signatureDebugTypeList[] = { - { KSIG_NULL, "null" }, - { KSIG_ARITHMETIC, "value" }, - { KSIG_OBJECT, "object" }, - { KSIG_REF, "reference" }, - { KSIG_LIST, "list" }, - { KSIG_NODE, "node" }, - { 0, NULL } + { KSIG_NULL, "null" }, + { KSIG_ARITHMETIC, "value" }, + { KSIG_UNINITIALIZED, "uninitialized" }, + { KSIG_OBJECT, "object" }, + { KSIG_REF, "reference" }, + { KSIG_LIST, "list" }, + { KSIG_NODE, "node" }, + { 0, NULL } }; static void kernelSignatureDebugType(const char type) { diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h index cb66aa9f4d4..9b4a11f1321 100644 --- a/engines/sci/engine/kernel.h +++ b/engines/sci/engine/kernel.h @@ -99,14 +99,15 @@ struct SelectorCache; // from selector.h // Compiled signatures enum { - KSIG_LIST = 0x01, - KSIG_NODE = 0x02, - KSIG_OBJECT = 0x04, - KSIG_REF = 0x08, - KSIG_ARITHMETIC = 0x10, - KSIG_NULL = 0x40, - KSIG_ANY = 0x5f, - KSIG_ELLIPSIS = 0x80 + KSIG_LIST = 0x01, + KSIG_NODE = 0x02, + KSIG_OBJECT = 0x04, + KSIG_REF = 0x08, + KSIG_ARITHMETIC = 0x10, + KSIG_UNINITIALIZED = 0x20, + KSIG_NULL = 0x40, + KSIG_ANY = 0x5f, + KSIG_ELLIPSIS = 0x80 }; // ----------------------------------------------------------------------------