Skip to content

Commit

Permalink
Merge pull request #8802 from leoetlino/wiiroot-mii-db
Browse files Browse the repository at this point in the history
WiiRoot: Fix empty files being created when source is missing
  • Loading branch information
JosJuice committed May 17, 2020
2 parents 099197b + 47ee5ac commit 2250fbc
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions Source/Core/Core/WiiRoot.cpp
Expand Up @@ -80,21 +80,21 @@ static void CopySave(FS::FileSystem* source, FS::FileSystem* dest, const u64 tit
static bool CopyNandFile(FS::FileSystem* source_fs, const std::string& source_file,
FS::FileSystem* dest_fs, const std::string& dest_file)
{
const auto last_slash = dest_file.find_last_of('/');
if (last_slash != std::string::npos && last_slash > 0)
{
const std::string dir = dest_file.substr(0, last_slash);
dest_fs->CreateFullPath(IOS::PID_KERNEL, IOS::PID_KERNEL, dir + '/', 0,
{FS::Mode::ReadWrite, FS::Mode::ReadWrite, FS::Mode::ReadWrite});
}

auto source_handle =
source_fs->OpenFile(IOS::PID_KERNEL, IOS::PID_KERNEL, source_file, IOS::HLE::FS::Mode::Read);
// If the source file doesn't exist, there is nothing more to do.
// This function must not create an empty file on the destination filesystem.
if (!source_handle)
return true;

dest_fs->CreateFullPath(IOS::PID_KERNEL, IOS::PID_KERNEL, dest_file, 0,
{FS::Mode::ReadWrite, FS::Mode::ReadWrite, FS::Mode::ReadWrite});

auto dest_handle =
dest_fs->CreateAndOpenFile(IOS::PID_KERNEL, IOS::PID_KERNEL, source_file,
{IOS::HLE::FS::Mode::ReadWrite, IOS::HLE::FS::Mode::ReadWrite,
IOS::HLE::FS::Mode::ReadWrite});
if (!source_handle || !dest_handle)
if (!dest_handle)
return false;

std::vector<u8> buffer(source_handle->GetStatus()->size);
Expand Down

0 comments on commit 2250fbc

Please sign in to comment.