reios: crash when CDDA play with no disk
Fixes MINIDUMP-HW
This commit is contained in:
parent
77ded80450
commit
cd7168772d
|
@ -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;
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue