From 36ce493c1ef469bdf33fde8bae1f76ac555bd37f Mon Sep 17 00:00:00 2001 From: Jorj Bauer Date: Thu, 2 Jul 2020 22:01:01 -0400 Subject: [PATCH] fix crasher when accessing empty drive --- apple/diskii.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apple/diskii.cpp b/apple/diskii.cpp index e0eb7db..ce61924 100644 --- a/apple/diskii.cpp +++ b/apple/diskii.cpp @@ -461,7 +461,11 @@ void DiskII::setPhase(uint8_t phase) } if (curHalfTrack[selectedDisk] != prevHalfTrack) { - curWozTrack[selectedDisk] = disk[selectedDisk]->dataTrackNumberForQuarterTrack(curHalfTrack[selectedDisk]*2); + if (disk[selectedDisk]) { + curWozTrack[selectedDisk] = disk[selectedDisk]->dataTrackNumberForQuarterTrack(curHalfTrack[selectedDisk]*2); + } else { + curWozTrack[selectedDisk] = 0; + } } } @@ -547,7 +551,11 @@ void DiskII::insertDisk(int8_t driveNum, const char *filename, bool drawIt) disk[driveNum] = new WozSerializer(); // intentionally 'false' (see above call to readFile) - disk[driveNum]->readFile(filename, false, T_AUTO); // FIXME error checking + if (!disk[driveNum]->readFile(filename, false, T_AUTO)) { + delete disk[driveNum]; + disk[driveNum] = NULL; + return; + } curWozTrack[driveNum] = disk[driveNum]->dataTrackNumberForQuarterTrack(curHalfTrack[driveNum]*2); @@ -686,7 +694,7 @@ uint8_t DiskII::readOrWriteByte() } goto done; } - + // If we reach here, we're throwing away a bunch of missed data. // This might be normal (where the machine wasn't listening for the data), // or it might be exceptional (something wrong with the tuning of data