From 781dd3b18369bebe4c089526be9f470c12311e48 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Sun, 3 Jan 2010 21:12:44 +0000 Subject: Fixed compilation with DISABLE_VALIDATIONS, and fixed a bug in kPrevNode svn-id: r46949 --- engines/sci/engine/kernel.h | 1 + engines/sci/engine/klists.cpp | 4 +++- engines/sci/engine/vm.cpp | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) (limited to 'engines') diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h index 520f7284a9..9e24f2f2d1 100644 --- a/engines/sci/engine/kernel.h +++ b/engines/sci/engine/kernel.h @@ -41,6 +41,7 @@ struct Node; // from segment.h struct List; // from segment.h //#define DEBUG_PARSER // enable for parser debugging +//#define DISABLE_VALIDATIONS // enable to stop validation checks /* Generic description: */ typedef reg_t KernelFunc(EngineState *s, int argc, reg_t *argv); diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp index c5a798d86b..2b2a9b4562 100644 --- a/engines/sci/engine/klists.cpp +++ b/engines/sci/engine/klists.cpp @@ -247,8 +247,10 @@ reg_t kNextNode(EngineState *s, int argc, reg_t *argv) { reg_t kPrevNode(EngineState *s, int argc, reg_t *argv) { Node *n = s->_segMan->lookupNode(argv[0]); - if (!sane_nodep(s, argv[0])) + if (!sane_nodep(s, argv[0])) { warning("List node at %04x:%04x is not sane anymore", PRINT_REG(argv[0])); + return NULL_REG; + } return n->pred; } diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index e5fdbbb145..1b570c5dea 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -185,7 +185,7 @@ static void validate_write_var(reg_t *r, reg_t *stack_base, int type, int max, i # define validate_arithmetic(r) ((r).offset) # define signed_validate_arithmetic(r) ((int) ((r).offset) & 0x8000 ? (signed) ((r).offset) - 65536 : ((r).offset)) # define validate_variable(r, sb, t, m, i, l) -# define validate_read_var(r, sb, t, m, i, l) ((r)[i]) +# define validate_read_var(r, sb, t, m, i, l, dv) ((r)[i]) # define validate_write_var(r, sb, t, m, i, l, v, sm, k) ((r)[i] = (v)) # define validate_property(o, p) ((o)->_variables[p]) @@ -492,7 +492,7 @@ ExecStack *add_exec_stack_entry(EngineState *s, reg_t pc, StackPtr sp, reg_t obj return &(s->_executionStack.back()); } -#ifdef DISABLE_VALIDATONS +#ifdef DISABLE_VALIDATIONS # define kernel_matches_signature(a, b, c, d) 1 #endif -- cgit v1.2.3