diff options
-rw-r--r-- | engines/sci/engine/seg_manager.cpp | 2 | ||||
-rw-r--r-- | engines/sci/graphics/paint16.cpp | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index d356c9a3fc..3740e53339 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -454,7 +454,7 @@ byte *SegManager::getHunkPointer(reg_t addr) { HunkTable *ht = (HunkTable *)getSegment(addr.segment, SEG_TYPE_HUNK); if (!ht || !ht->isValidEntry(addr.offset)) { - error("getHunkPointer() with invalid handle %04x:%04x", PRINT_REG(addr)); + // Valid SCI behavior, e.g. when loading/quitting return NULL; } diff --git a/engines/sci/graphics/paint16.cpp b/engines/sci/graphics/paint16.cpp index c5b97ad216..88fa467b3a 100644 --- a/engines/sci/graphics/paint16.cpp +++ b/engines/sci/graphics/paint16.cpp @@ -330,7 +330,8 @@ reg_t GfxPaint16::bitsSave(const Common::Rect &rect, byte screenMask) { memoryId = _segMan->allocateHunkEntry("SaveBits()", size); memoryPtr = _segMan->getHunkPointer(memoryId); - _screen->bitsSave(workerRect, screenMask, memoryPtr); + if (memoryPtr) + _screen->bitsSave(workerRect, screenMask, memoryPtr); return memoryId; } |