diff options
-rw-r--r-- | engines/sci/engine/klists.cpp | 22 | ||||
-rw-r--r-- | engines/sci/engine/vm.cpp | 4 |
2 files changed, 8 insertions, 18 deletions
diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp index f49c6a06c9..d655472ba4 100644 --- a/engines/sci/engine/klists.cpp +++ b/engines/sci/engine/klists.cpp @@ -56,16 +56,8 @@ Node *lookup_node(EngineState *s, reg_t addr, const char *file, int line) { return &(nt->table[addr.offset].entry); } -#define LOOKUP_NULL_LIST(addr) _lookup_list(s, addr, __FILE__, __LINE__, 1) - -List *_lookup_list(EngineState *s, reg_t addr, const char *file, int line, int may_be_null) { - MemObject *mobj; - ListTable *lt; - - if (may_be_null && !addr.segment && !addr.offset) - return NULL; - - mobj = GET_SEGMENT(*s->seg_manager, addr.segment, MEM_OBJ_LISTS); +List *lookup_list(EngineState *s, reg_t addr, const char *file, int line) { + MemObject *mobj = GET_SEGMENT(*s->seg_manager, addr.segment, MEM_OBJ_LISTS); if (!mobj) { sciprintf("%s, L%d: Attempt to use non-list "PREG" as list\n", __FILE__, __LINE__, PRINT_REG(addr)); @@ -73,7 +65,7 @@ List *_lookup_list(EngineState *s, reg_t addr, const char *file, int line, int m return NULL; } - lt = &(mobj->data.lists); + ListTable *lt = &(mobj->data.lists); if (!ENTRY_IS_VALID(lt, addr.offset)) { sciprintf("%s, L%d: Attempt to use non-list "PREG" as list\n", __FILE__, __LINE__, PRINT_REG(addr)); @@ -84,10 +76,6 @@ List *_lookup_list(EngineState *s, reg_t addr, const char *file, int line, int m return &(lt->table[addr.offset].entry); } -List *lookup_list(EngineState *s, reg_t addr, const char *file, int line) { - return _lookup_list(s, addr, file, line, 0); -} - #ifdef DISABLE_VALIDATIONS #define sane_nodep(a, b) 1 @@ -212,7 +200,9 @@ reg_t kNewNode(EngineState *s, int funct_nr, int argc, reg_t *argv) { } reg_t kFirstNode(EngineState *s, int funct_nr, int argc, reg_t *argv) { - List *l = LOOKUP_NULL_LIST(argv[0]); + if (IS_NULL_REG(argv[0])) + return NULL_REG; + List *l = LOOKUP_LIST(argv[0]); if (l && !sane_listp(s, argv[0])) SCIkwarn(SCIkERROR, "List at "PREG" is not sane anymore!\n", PRINT_REG(argv[0])); diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index 515f3e46d4..424c7a8180 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -578,7 +578,7 @@ static void gc_countdown(EngineState *s) { } } -static byte _fake_return_buffer[2] = {op_ret << 1, op_ret << 1}; +static const byte _fake_return_buffer[2] = {op_ret << 1, op_ret << 1}; void run_vm(EngineState *s, int restoring) { reg_t *variables[4]; // global, local, temp, param, as immediate pointers @@ -603,7 +603,7 @@ void run_vm(EngineState *s, int restoring) { Script *local_script = script_locate_by_segment(s, xs->local_segment); int old_execution_stack_base = s->execution_stack_base; // Used to detect the stack bottom, for "physical" returns - byte *code_buf = NULL; // (Avoid spurious warning) + const byte *code_buf = NULL; // (Avoid spurious warning) if (!local_script) { script_error(s, __FILE__, __LINE__, "Program Counter gone astray"); |