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.cpp10
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