diff options
author | Lars Skovlund | 2010-11-19 12:49:46 +0000 |
---|---|---|
committer | Lars Skovlund | 2010-11-19 12:49:46 +0000 |
commit | 84d4a4a89faa5790b4820eb1e9522e83826fb442 (patch) | |
tree | 9b842b4a1c99d61e471bbf483a2ea0c54a30d3e3 | |
parent | 824a4009c9d32806d2677a97cbff434de98fad90 (diff) | |
download | scummvm-rg350-84d4a4a89faa5790b4820eb1e9522e83826fb442.tar.gz scummvm-rg350-84d4a4a89faa5790b4820eb1e9522e83826fb442.tar.bz2 scummvm-rg350-84d4a4a89faa5790b4820eb1e9522e83826fb442.zip |
Implement a couple of NULL checks in kArray
svn-id: r54373
-rw-r--r-- | engines/sci/engine/klists.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/engines/sci/engine/klists.cpp b/engines/sci/engine/klists.cpp index 5b26a932c7..ae52444430 100644 --- a/engines/sci/engine/klists.cpp +++ b/engines/sci/engine/klists.cpp @@ -688,6 +688,11 @@ reg_t kArray(EngineState *s, int argc, reg_t *argv) { return argv[1]; } case 6: { // Cpy + if (argv[1].isNull() || argv[3].isNull()) { + warning("kArray(Cpy): Request to copy from or to a null pointer"); + return NULL_REG; + } + #if 0 if (s->_segMan->getSegmentObj(argv[1].segment)->getType() != SEG_TYPE_ARRAY || s->_segMan->getSegmentObj(argv[3].segment)->getType() != SEG_TYPE_ARRAY) { @@ -722,6 +727,11 @@ reg_t kArray(EngineState *s, int argc, reg_t *argv) { warning("kArray(Cmp) called"); return s->r_acc; case 8: { // Dup + if (argv[1].isNull()) { + warning("kArray(Dup): Request to duplicate a null pointer"); + return NULL_REG; + } + SegmentType sourceType = s->_segMan->getSegmentObj(argv[1].segment)->getType(); if (sourceType == SEG_TYPE_SCRIPT) { // A technique used in later SCI2.1 and SCI3 games: the contents of a script |