cdrom: report read errors correctly
[pcsx_rearmed.git] / libpcsxcore / cdriso.c
index be7300f..2a31950 100644 (file)
@@ -1238,7 +1238,7 @@ static int cdread_2048(FILE *f, unsigned int base, void *dest, int sector)
        sec2msf(sector + 2 * 75, (char *)&cdbuffer[12]);
        cdbuffer[12 + 3] = 1;
 
-       return ret;
+       return 12*2 + ret;
 }
 
 static unsigned char * CALLBACK ISOgetBuffer_compr(void) {
@@ -1540,14 +1540,14 @@ static boolean CALLBACK ISOreadTrack(unsigned char *time) {
        }
 
        ret = cdimg_read_func(cdHandle, 0, cdbuffer, sector);
-       if (ret < 0)
+       if (ret < 12*2 + 2048)
                return 0;
 
        if (subHandle != NULL) {
                fseek(subHandle, sector * SUB_FRAMESIZE, SEEK_SET);
                if (fread(subbuffer, 1, SUB_FRAMESIZE, subHandle) != SUB_FRAMESIZE)
                        /* Faulty subchannel data shouldn't cause a read failure */
-                       return 0;
+                       return 1;
 
                if (subChanRaw) DecodeRawSubData();
        }