diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.cpp index 6c1ab5baef..b552185f87 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.cpp @@ -390,7 +390,13 @@ void ExecuteCommand(u32 _Address) INFO_LOG(WII_IPC_FILEIO, "IOP: Open File (Device=%s, ID=%08x, Mode=%i)", pDevice->GetDeviceName().c_str(), DeviceID, Mode); if (Memory::Read_U32(_Address + 4) == DeviceID) + { g_FdMap[DeviceID] = pDevice; + } + else + { + delete pDevice; + } } } diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp index f5a893012a..1f0b0d72cd 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp @@ -157,18 +157,21 @@ bool CWII_IPC_HLE_Device_FileIO::OpenFile() break; } case ISFS_OPEN_WRITE: + { m_pFileHandle.Open(m_Filename, "r+b"); break; - + } case ISFS_OPEN_RW: { m_pFileHandle.Open(m_Filename, "r+b"); break; } default: + { PanicAlertT("FileIO: Unknown open mode : 0x%02x", m_Mode); break; } + } return m_pFileHandle.IsOpen(); }