From 72bb930435a5d1a2de7d23b02fafeeeef33714d4 Mon Sep 17 00:00:00 2001 From: cebix <> Date: Thu, 25 Apr 2002 13:14:11 +0000 Subject: [PATCH] added some safety checks --- BasiliskII/src/video.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/BasiliskII/src/video.cpp b/BasiliskII/src/video.cpp index 43d1f1a3..2cc6addd 100644 --- a/BasiliskII/src/video.cpp +++ b/BasiliskII/src/video.cpp @@ -416,10 +416,18 @@ void monitor_desc::switch_mode(vector::const_iterator it, uint32 par WriteMacInt32(0x824, mac_frame_base); // ScrnBase WriteMacInt32(0x898, mac_frame_base); // CrsrBase uint32 gdev = ReadMacInt32(0x8a4); // MainDevice - gdev = ReadMacInt32(gdev); - uint32 pmap = ReadMacInt32(gdev + 0x16); // gdPMap - pmap = ReadMacInt32(pmap); - WriteMacInt32(pmap, mac_frame_base); // baseAddr + D(bug("MainDevice handle at %08lx\n", gdev)); + if (gdev != 0 && gdev != 0xffffffff) { + gdev = ReadMacInt32(gdev); + D(bug(" pointer at %08lx\n", gdev)); + uint32 pmap = ReadMacInt32(gdev + 0x16); // gdPMap + D(bug(" PixMap handle at %08lx\n", pmap)); + pmap = ReadMacInt32(pmap); + D(bug(" pointer at %08lx\n", pmap)); + WriteMacInt32(pmap, mac_frame_base); // baseAddr + } + gdev = ReadMacInt32(0xcc8); // TheGDevice + D(bug("TheGDevice handle at %08lx\n", gdev)); } }