From 20a25caba7d8e45802f288948b5ae88ace4ffdea Mon Sep 17 00:00:00 2001 From: OBattler Date: Mon, 13 Feb 2017 20:21:57 +0100 Subject: [PATCH] cdrom_set_signature() now does a sanity check on the CD-ROM drive ID, fixes random crashes on hard reset. --- src/cdrom.c | 4 ++++ src/ide.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cdrom.c b/src/cdrom.c index b0acbe5c0..e97c946d1 100644 --- a/src/cdrom.c +++ b/src/cdrom.c @@ -306,6 +306,10 @@ void cdrom_reset_cdb_len(int id) void cdrom_set_signature(int id) { + if (id >= CDROM_NUM) + { + return; + } cdrom[id].phase = 1; cdrom[id].request_length = 0xEB14; } diff --git a/src/ide.c b/src/ide.c index be9c920e0..001a915a4 100644 --- a/src/ide.c +++ b/src/ide.c @@ -559,7 +559,7 @@ static void loadhd(IDE *ide, int d, const char *fn) void ide_set_signature(IDE *ide) { - uint8_t cdrom_id = atapi_cdrom_drives[cur_ide[ide->board]]; + uint8_t cdrom_id = atapi_cdrom_drives[ide->channel]; ide->sector=1; ide->head=0; if (ide_drive_is_cdrom(ide))