GH-1745 fix crash when using path matching filter on copy operations

Copying instances without saves doesn't crash anymore.
This commit is contained in:
Petr Mrázek 2016-12-08 21:58:31 +01:00
parent 2517d2c84d
commit a6882787b0
2 changed files with 10 additions and 12 deletions

View File

@ -14,24 +14,22 @@ InstanceCopyTask::InstanceCopyTask(SettingsObjectPtr settings, BaseInstanceProvi
m_instName = instName;
m_instIcon = instIcon;
m_instGroup = instGroup;
m_copySaves = copySaves;
if(!copySaves)
{
// FIXME: get this from the original instance type...
auto matcherReal = new RegexpMatcher("[.]?minecraft/saves");
matcherReal->caseSensitive(false);
m_matcher.reset(matcherReal);
}
}
void InstanceCopyTask::executeTask()
{
setStatus(tr("Copying instance %1").arg(m_origInstance->name()));
std::unique_ptr<IPathMatcher> matcher;
if(!m_copySaves)
{
// FIXME: get this from the original instance type...
auto matcherReal = new RegexpMatcher("[.]?minecraft/saves");
matcherReal->caseSensitive(false);
matcher.reset(matcherReal);
}
m_stagingPath = m_target->getStagedInstancePath();
FS::copy folderCopy(m_origInstance->instanceRoot(), m_stagingPath);
folderCopy.followSymlinks(false).blacklist(matcher.get());
folderCopy.followSymlinks(false).blacklist(m_matcher.get());
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), folderCopy);
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &InstanceCopyTask::copyFinished);

View File

@ -34,9 +34,9 @@ private: /* data */
QString m_instIcon;
QString m_instGroup;
QString m_stagingPath;
bool m_copySaves = false;
QFuture<bool> m_copyFuture;
QFutureWatcher<bool> m_copyFutureWatcher;
std::unique_ptr<IPathMatcher> m_matcher;
};