aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authornotaz2013-03-15 01:49:37 +0200
committernotaz2013-03-15 02:19:21 +0200
commitc0ee7ac6dbe0e4ec289f7cfd2ee1224890751025 (patch)
tree23ad16889066c8e618cc9e93cd7d0fdecee17b30 /libpcsxcore
parent8e7632dd01235ea64d7d6e712ce5410a6c594ea4 (diff)
downloadpcsx_rearmed-c0ee7ac6dbe0e4ec289f7cfd2ee1224890751025.tar.gz
pcsx_rearmed-c0ee7ac6dbe0e4ec289f7cfd2ee1224890751025.tar.bz2
pcsx_rearmed-c0ee7ac6dbe0e4ec289f7cfd2ee1224890751025.zip
cdriso: handle no disk state better
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/cdriso.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libpcsxcore/cdriso.c b/libpcsxcore/cdriso.c
index 21203da..dde21bc 100644
--- a/libpcsxcore/cdriso.c
+++ b/libpcsxcore/cdriso.c
@@ -1316,8 +1316,12 @@ static long CALLBACK ISOclose(void) {
}
}
numtracks = 0;
+ ti[1].type = 0;
UnloadSBI();
+ memset(cdbuffer, 0, sizeof(cdbuffer));
+ CDR_getBuffer = ISOgetBuffer;
+
return 0;
}
@@ -1400,6 +1404,7 @@ static void DecodeRawSubData(void) {
// uses bcd format
static long CALLBACK ISOreadTrack(unsigned char *time) {
int sector = MSF2SECT(btoi(time[0]), btoi(time[1]), btoi(time[2]));
+ long ret;
if (cdHandle == NULL) {
return -1;
@@ -1414,7 +1419,9 @@ static long CALLBACK ISOreadTrack(unsigned char *time) {
}
}
- cdimg_read_func(cdHandle, 0, cdbuffer, sector);
+ ret = cdimg_read_func(cdHandle, 0, cdbuffer, sector);
+ if (ret < 0)
+ return -1;
if (subHandle != NULL) {
fseek(subHandle, sector * SUB_FRAMESIZE, SEEK_SET);