fix changedisc (broken by switch to unicode)
char * was deallocated before callback was reached, How did it work before XTra.KrazzY? git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3969 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
70f5d17d43
commit
b4faea0186
|
@ -301,6 +301,8 @@ bool IsDiscInside()
|
||||||
|
|
||||||
// Take care of all logic of "swapping discs"
|
// Take care of all logic of "swapping discs"
|
||||||
// We want this in the "backend", NOT the gui
|
// We want this in the "backend", NOT the gui
|
||||||
|
// any !empty string will be deleted to ensure
|
||||||
|
// that the userdata string exists when called
|
||||||
void ChangeDiscCallback(u64 userdata, int cyclesLate)
|
void ChangeDiscCallback(u64 userdata, int cyclesLate)
|
||||||
{
|
{
|
||||||
std::string FileName((const char*)userdata);
|
std::string FileName((const char*)userdata);
|
||||||
|
@ -314,17 +316,21 @@ void ChangeDiscCallback(u64 userdata, int cyclesLate)
|
||||||
// Empty the drive
|
// Empty the drive
|
||||||
VolumeHandler::EjectVolume();
|
VolumeHandler::EjectVolume();
|
||||||
}
|
}
|
||||||
else if (VolumeHandler::SetVolumeName(FileName))
|
|
||||||
{
|
|
||||||
// Save the new ISO file name
|
|
||||||
SavedFileName = FileName;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PanicAlert("Invalid file");
|
delete [] (char *) userdata;
|
||||||
|
if (VolumeHandler::SetVolumeName(FileName))
|
||||||
|
{
|
||||||
|
// Save the new ISO file name
|
||||||
|
SavedFileName = FileName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PanicAlert("Invalid file \n %s", FileName.c_str());
|
||||||
|
|
||||||
// Put back the old one
|
// Put back the old one
|
||||||
VolumeHandler::SetVolumeName(SavedFileName);
|
VolumeHandler::SetVolumeName(SavedFileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetLidOpen(false);
|
SetLidOpen(false);
|
||||||
|
|
|
@ -474,7 +474,10 @@ void CFrame::DoOpen(bool Boot)
|
||||||
{
|
{
|
||||||
if (!fileChosen)
|
if (!fileChosen)
|
||||||
path = wxT("");
|
path = wxT("");
|
||||||
DVDInterface::ChangeDisc((const char *)path.mb_str());
|
// temp is deleted by changediscCallback
|
||||||
|
char * temp = new char[strlen(path.mb_str())];
|
||||||
|
strncpy(temp, path.mb_str(), strlen(path.mb_str()));
|
||||||
|
DVDInterface::ChangeDisc(temp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -631,7 +634,7 @@ void CFrame::OnShow_InfoWindow(wxCommandEvent& WXUNUSED (event))
|
||||||
|
|
||||||
void CFrame::OnLoadWiiMenu(wxCommandEvent& WXUNUSED (event))
|
void CFrame::OnLoadWiiMenu(wxCommandEvent& WXUNUSED (event))
|
||||||
{
|
{
|
||||||
BootManager::BootCore(FULL_WII_MENU_DIR);
|
BootManager::BootCore(FULL_WII_MENU_DIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Toogle fullscreen. In Windows the fullscreen mode is accomplished by expanding the m_Panel to cover
|
// Toogle fullscreen. In Windows the fullscreen mode is accomplished by expanding the m_Panel to cover
|
||||||
|
|
Loading…
Reference in New Issue