Skip to content

Commit

Permalink
Merge pull request #11576 from yannhodiesne/convert-prevent-file-dele…
Browse files Browse the repository at this point in the history
…tion

Check the input and destination paths before converting a game file onto itself
  • Loading branch information
AdmiralCurtiss committed Feb 17, 2023
2 parents b381df7 + 49e8974 commit 74abf48
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion Source/Core/DolphinQt/ConvertDialog.cpp
Expand Up @@ -4,6 +4,7 @@
#include "DolphinQt/ConvertDialog.h"

#include <algorithm>
#include <filesystem>
#include <functional>
#include <future>
#include <memory>
Expand All @@ -22,6 +23,7 @@

#include "Common/Assert.h"
#include "Common/Logging/Log.h"
#include "Common/StringUtil.h"
#include "DiscIO/Blob.h"
#include "DiscIO/DiscUtils.h"
#include "DiscIO/ScrubbedBlob.h"
Expand Down Expand Up @@ -385,6 +387,8 @@ void ConvertDialog::Convert()
return;
}

int success_count = 0;

for (const auto& file : m_files)
{
const auto original_path = file->GetFilePath();
Expand All @@ -410,6 +414,21 @@ void ConvertDialog::Convert()
}
}

if (std::filesystem::exists(StringToPath(dst_path.toStdString())))
{
std::error_code ec;
if (std::filesystem::equivalent(StringToPath(dst_path.toStdString()),
StringToPath(original_path), ec))
{
ModalMessageBox::critical(
this, tr("Error"),
tr("The destination file cannot be the same as the source file\n\n"
"Please select another destination path for \"%1\"")
.arg(QString::fromStdString(original_path)));
continue;
}
}

ParallelProgressDialog progress_dialog(tr("Converting..."), tr("Abort"), 0, 100, this);
progress_dialog.GetRaw()->setWindowModality(Qt::WindowModal);
progress_dialog.GetRaw()->setWindowTitle(tr("Progress"));
Expand Down Expand Up @@ -507,11 +526,13 @@ void ConvertDialog::Convert()
tr("Dolphin failed to complete the requested action."));
return;
}

success_count++;
}
}

ModalMessageBox::information(this, tr("Success"),
tr("Successfully converted %n image(s).", "", m_files.size()));
tr("Successfully converted %n image(s).", "", success_count));

close();
}

0 comments on commit 74abf48

Please sign in to comment.