From 8a1862c4b2838b4107f81f53850de3bee4d2688e Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 30 Jan 2025 06:38:05 +0100 Subject: [PATCH] CD-ROM: Correctly return from read sector with the return code from the back-end in case of error, fixes System Shock 2 CD detection. --- src/cdrom/cdrom.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/cdrom/cdrom.c b/src/cdrom/cdrom.c index 3a6f17d7b..33e8b0cf1 100644 --- a/src/cdrom/cdrom.c +++ b/src/cdrom/cdrom.c @@ -2192,13 +2192,22 @@ cdrom_readsector_raw(const cdrom_t *dev, uint8_t *buffer, const int sector, cons if (audio) { if (!track_type_is_valid(dev, cdrom_sector_type, cdrom_sector_flags, 1, 0x00)) ret = 0; - else + else { ret = read_audio(dev, lba, temp_b); + + /* Return with error if we had one. */ + if (ret < 0) + return ret; + } } else { int form = 0; ret = read_data(dev, lba); + /* Return with error if we had one. */ + if (ret < 0) + return ret; + if ((raw_buffer[0x000f] == 0x00) || (raw_buffer[0x000f] > 0x02)) { cdrom_log(dev->log, "[%s] Unknown mode: %02X\n", cdrom_req_modes[cdrom_sector_type], raw_buffer[0x000f]);