#define R_ERROR_RETURN(error) \
{ \
- printf("PicoCdLoadState @ %x: " error "\n", g_read_offs); \
+ elprintf(EL_STATUS, "PicoCdLoadState @ %x: " error "\n", g_read_offs); \
return 1; \
}
g_read_offs += len;
#define CHECKED_READ2(len2,data) \
- if (len2 != len) R_ERROR_RETURN("unexpected len, wanted " #len2); \
- CHECKED_READ(len2, data)
+ if (len2 != len) { \
+ elprintf(EL_STATUS, "unexpected len %i, wanted %i (%s)", len, len2, #len2); \
+ if (len > len2) R_ERROR_RETURN("failed."); \
+ /* else read anyway and hope for the best.. */ \
+ } \
+ CHECKED_READ(len, data)
#define CHECKED_READ_BUFF(buff) CHECKED_READ2(sizeof(buff), &buff);
case CHUNK_MISC_CD: CHECKED_READ_BUFF(Pico_mcd->m); break;
default:
- printf("PicoCdLoadState: skipping unknown chunk %i of size %i\n", buff[0], len);
+ elprintf(EL_STATUS, "PicoCdLoadState: skipping unknown chunk %i of size %i\n", buff[0], len);
areaSeek(file, len, SEEK_CUR);
break;
}