From d9ee5d43bbecb544b3467c54a4d79feee3e43005 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Fri, 24 Jun 2022 17:15:40 +0600 Subject: [PATCH] qt: Fix crashes on loading non-existent ZIP/MO images --- src/qt/qt_machinestatus.cpp | 13 +++++++------ src/qt/qt_mediamenu.cpp | 2 ++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/qt/qt_machinestatus.cpp b/src/qt/qt_machinestatus.cpp index 39c98b6aa..bd0e491f1 100644 --- a/src/qt/qt_machinestatus.cpp +++ b/src/qt/qt_machinestatus.cpp @@ -583,24 +583,25 @@ void MachineStatus::updateTip(int tag) { int category = tag & 0xfffffff0; int item = tag & 0xf; + if (!MediaMenu::ptr) return; switch (category) { case SB_CASSETTE: - d->cassette.label->setToolTip(MediaMenu::ptr->cassetteMenu->title()); + if (d->cassette.label && MediaMenu::ptr->cassetteMenu) d->cassette.label->setToolTip(MediaMenu::ptr->cassetteMenu->title()); break; case SB_CARTRIDGE: - d->cartridge[item].label->setToolTip(MediaMenu::ptr->cartridgeMenus[item]->title()); + if (d->cartridge[item].label && MediaMenu::ptr->cartridgeMenus[item]) d->cartridge[item].label->setToolTip(MediaMenu::ptr->cartridgeMenus[item]->title()); break; case SB_FLOPPY: - d->fdd[item].label->setToolTip(MediaMenu::ptr->floppyMenus[item]->title()); + if (d->fdd[item].label && MediaMenu::ptr->floppyMenus[item]) d->fdd[item].label->setToolTip(MediaMenu::ptr->floppyMenus[item]->title()); break; case SB_CDROM: - d->cdrom[item].label->setToolTip(MediaMenu::ptr->cdromMenus[item]->title()); + if (d->cdrom[item].label && MediaMenu::ptr->cdromMenus[item]) d->cdrom[item].label->setToolTip(MediaMenu::ptr->cdromMenus[item]->title()); break; case SB_ZIP: - d->zip[item].label->setToolTip(MediaMenu::ptr->zipMenus[item]->title()); + if (d->zip[item].label && MediaMenu::ptr->zipMenus[item]) d->zip[item].label->setToolTip(MediaMenu::ptr->zipMenus[item]->title()); break; case SB_MO: - d->mo[item].label->setToolTip(MediaMenu::ptr->moMenus[item]->title()); + if (d->mo[item].label && MediaMenu::ptr->moMenus[item]) d->mo[item].label->setToolTip(MediaMenu::ptr->moMenus[item]->title()); break; case SB_HDD: break; diff --git a/src/qt/qt_mediamenu.cpp b/src/qt/qt_mediamenu.cpp index 3fe09ee45..3dcac9f2a 100644 --- a/src/qt/qt_mediamenu.cpp +++ b/src/qt/qt_mediamenu.cpp @@ -501,6 +501,7 @@ void MediaMenu::zipEject(int i) { zip_t *dev = (zip_t *) zip_drives[i].priv; zip_disk_close(dev); + zip_drives[i].image_path[0] = 0; if (zip_drives[i].bus_type) { /* Signal disk change to the emulated machine. */ zip_insert(dev); @@ -600,6 +601,7 @@ void MediaMenu::moEject(int i) { mo_t *dev = (mo_t *) mo_drives[i].priv; mo_disk_close(dev); + mo_drives[i].image_path[0] = 0; if (mo_drives[i].bus_type) { /* Signal disk change to the emulated machine. */ mo_insert(dev);