aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMartin Kiewitz2014-01-27 22:27:21 +0100
committerMartin Kiewitz2014-01-27 22:27:21 +0100
commit3f116d98bcc4374eec9117e0af4177c07b3a7ebd (patch)
treead53d59c393eadf20598cb12fa13c09b40694f84 /engines
parent0f5eeaed7b3c9d2f74eee7dff2114c5f4dc63f00 (diff)
downloadscummvm-rg350-3f116d98bcc4374eec9117e0af4177c07b3a7ebd.tar.gz
scummvm-rg350-3f116d98bcc4374eec9117e0af4177c07b3a7ebd.tar.bz2
scummvm-rg350-3f116d98bcc4374eec9117e0af4177c07b3a7ebd.zip
SCI: fix negative array access in parseNodes
was used for debug command only CID 1003543
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/parser/vocabulary.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/engines/sci/parser/vocabulary.cpp b/engines/sci/parser/vocabulary.cpp
index f5b79d6c5e..61659f864d 100644
--- a/engines/sci/parser/vocabulary.cpp
+++ b/engines/sci/parser/vocabulary.cpp
@@ -724,14 +724,13 @@ int Vocabulary::parseNodes(int *i, int *pos, int type, int nr, int argc, const c
newPos = parseNodes(i, pos, nextToken, nextValue, argc, argv);
+ if (newPos == -1)
+ return -1;
+
if (j == 0)
_parserNodes[oldPos].left = &_parserNodes[newPos];
else
_parserNodes[oldPos].right = &_parserNodes[newPos];
-
-
- if (newPos == -1)
- return -1;
}
const char *token = argv[(*i)++];