reios: crash when CDDA play with no disk

Fixes MINIDUMP-HW
This commit is contained in:
Flyinghead 2023-03-12 15:51:05 +01:00
parent 77ded80450
commit cd7168772d
2 changed files with 9 additions and 2 deletions

View File

@ -4,7 +4,7 @@ extern Disc* disc;
u32 libGDR_GetTrackNumber(u32 sector, u32& elapsed)
{
if (disc != NULL)
if (disc != nullptr)
{
for (size_t i = 0; i < disc->tracks.size(); i++)
if (disc->tracks[i].StartFAD <= sector && (sector <= disc->tracks[i].EndFAD || disc->tracks[i].EndFAD == 0))
@ -19,7 +19,7 @@ u32 libGDR_GetTrackNumber(u32 sector, u32& elapsed)
bool libGDR_GetTrack(u32 track_num, u32& start_fad, u32& end_fad)
{
if (track_num == 0 || track_num > disc->tracks.size())
if (disc == nullptr || track_num == 0 || track_num > disc->tracks.size())
return false;
start_fad = disc->tracks[track_num - 1].StartFAD;
end_fad = disc->tracks[track_num - 1].EndFAD;

View File

@ -348,6 +348,7 @@ static void GD_HLE_Command(gd_command cc)
break;
case GDCC_PLAY:
if (libGDR_GetDiscType() != Open && libGDR_GetDiscType() != NoDisk)
{
u32 first_track = gd_hle_state.params[0];
u32 last_track = gd_hle_state.params[1];
@ -365,6 +366,12 @@ static void GD_HLE_Command(gd_command cc)
cdda.CurrAddr.FAD = cdda.StartAddr.FAD;
SecNumber.Status = GD_PLAY;
}
else
{
gd_hle_state.status = GDC_ERR;
cdda.status = cdda_t::NoInfo;
SecNumber.Status = GD_STANDBY;
}
break;
case GDCC_PAUSE: