From 2a6048249de9599adb216201035b9b471b0589a3 Mon Sep 17 00:00:00 2001 From: smf- Date: Wed, 12 Jun 2013 20:39:44 +0000 Subject: [PATCH] fixed crash if no disk (nw) --- src/emu/machine/idectrl.c | 10 +++------- src/emu/machine/idehd.c | 5 +++++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/emu/machine/idectrl.c b/src/emu/machine/idectrl.c index 9aac32c64dc..d5977a97c8a 100644 --- a/src/emu/machine/idectrl.c +++ b/src/emu/machine/idectrl.c @@ -102,7 +102,9 @@ void ide_controller_device::set_irq(int state) /* signal an interrupt */ m_irq_handler(state); - dev->interrupt_pending = state; + + if (dev != NULL) + dev->interrupt_pending = state; } void ide_controller_device::set_dmarq(int state) @@ -1330,17 +1332,11 @@ void ide_controller_device::device_start() void ide_controller_device::device_reset() { - ide_device_interface *dev = slot[cur_drive]->dev(); - LOG(("IDE controller reset performed\n")); /* reset the drive state */ cur_drive = 0; status = IDE_STATUS_DRIVE_READY | IDE_STATUS_SEEK_COMPLETE; error = IDE_ERROR_DEFAULT; - dev->buffer_offset = 0; - dev->gnetreadlock = 0; - dev->master_password_enable = (dev->master_password != NULL); - dev->user_password_enable = (dev->user_password != NULL); set_irq(CLEAR_LINE); set_dmarq(0); } diff --git a/src/emu/machine/idehd.c b/src/emu/machine/idehd.c index 54a093deaf2..ff7d3f27de3 100644 --- a/src/emu/machine/idehd.c +++ b/src/emu/machine/idehd.c @@ -304,6 +304,11 @@ void ide_hdd_device::device_reset() if (m_handle->read_metadata (HARD_DISK_IDENT_METADATA_TAG, 0, m_features, IDE_DISK_SECTOR_SIZE, metalength) != CHDERR_NONE) ide_build_features(); } + + buffer_offset = 0; + gnetreadlock = 0; + master_password_enable = (master_password != NULL); + user_password_enable = (user_password != NULL); } //-------------------------------------------------