summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2016-12-08 21:58:31 +0100
committerPetr Mrázek <peterix@gmail.com>2016-12-08 21:58:31 +0100
commita6882787b0affd1adbdcdd794998f2a807fd69b4 (patch)
treeb938f0aba40afb87095eb0b5a0b3872382bcd689
parent2517d2c84d46892e4744bc5cbebb5119a9c9587d (diff)
downloadMultiMC-a6882787b0affd1adbdcdd794998f2a807fd69b4.tar
MultiMC-a6882787b0affd1adbdcdd794998f2a807fd69b4.tar.gz
MultiMC-a6882787b0affd1adbdcdd794998f2a807fd69b4.tar.lz
MultiMC-a6882787b0affd1adbdcdd794998f2a807fd69b4.tar.xz
MultiMC-a6882787b0affd1adbdcdd794998f2a807fd69b4.zip
GH-1745 fix crash when using path matching filter on copy operations
Copying instances without saves doesn't crash anymore.
-rw-r--r--api/logic/InstanceCopyTask.cpp16
-rw-r--r--api/logic/InstanceCopyTask.h2
2 files changed, 8 insertions, 10 deletions
diff --git a/api/logic/InstanceCopyTask.cpp b/api/logic/InstanceCopyTask.cpp
index 3150c383..20c09907 100644
--- a/api/logic/InstanceCopyTask.cpp
+++ b/api/logic/InstanceCopyTask.cpp
@@ -14,24 +14,22 @@ InstanceCopyTask::InstanceCopyTask(SettingsObjectPtr settings, BaseInstanceProvi
m_instName = instName;
m_instIcon = instIcon;
m_instGroup = instGroup;
- m_copySaves = copySaves;
-}
-void InstanceCopyTask::executeTask()
-{
- setStatus(tr("Copying instance %1").arg(m_origInstance->name()));
- std::unique_ptr<IPathMatcher> matcher;
- if(!m_copySaves)
+ if(!copySaves)
{
// FIXME: get this from the original instance type...
auto matcherReal = new RegexpMatcher("[.]?minecraft/saves");
matcherReal->caseSensitive(false);
- matcher.reset(matcherReal);
+ m_matcher.reset(matcherReal);
}
+}
+void InstanceCopyTask::executeTask()
+{
+ setStatus(tr("Copying instance %1").arg(m_origInstance->name()));
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);
diff --git a/api/logic/InstanceCopyTask.h b/api/logic/InstanceCopyTask.h
index 1ecf8313..28fd3f40 100644
--- a/api/logic/InstanceCopyTask.h
+++ b/api/logic/InstanceCopyTask.h
@@ -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;
};