aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/klists.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/engine/klists.cpp')
-rw-r--r--engines/sci/engine/klists.cpp22
1 files changed, 6 insertions, 16 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]));