diff options
author | flow <flowlnlnln@gmail.com> | 2022-09-16 20:00:36 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-09-16 20:12:30 -0300 |
commit | c9eb584ac80956730dd56068945f6791e29716b3 (patch) | |
tree | 0ccbfb8ab5d42d115b861af972eb45b54014091e /launcher/minecraft | |
parent | 10493bd44ab59171ac4f2e3ab7b600bcff8e4af6 (diff) | |
download | PrismLauncher-c9eb584ac80956730dd56068945f6791e29716b3.tar.gz PrismLauncher-c9eb584ac80956730dd56068945f6791e29716b3.tar.bz2 PrismLauncher-c9eb584ac80956730dd56068945f6791e29716b3.zip |
fix: prevent deletes by shared pointer accidental creation
This fixes the launcher crashing when opening the game :iea:
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/minecraft')
-rw-r--r-- | launcher/minecraft/MinecraftInstance.cpp | 2 | ||||
-rw-r--r-- | launcher/minecraft/mod/ResourceFolderModel.cpp | 2 | ||||
-rw-r--r-- | launcher/minecraft/mod/ResourceFolderModel.h | 6 | ||||
-rw-r--r-- | launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp | 2 |
4 files changed, 6 insertions, 6 deletions
diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 9478b1b8..47f53948 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -706,7 +706,7 @@ QStringList MinecraftInstance::verboseDescription(AuthSessionPtr session, Minecr { out << QString("%1:").arg(label); auto modList = model.allMods(); - std::sort(modList.begin(), modList.end(), [](Mod::Ptr a, Mod::Ptr b) { + std::sort(modList.begin(), modList.end(), [](auto a, auto b) { auto aName = a->fileinfo().completeBaseName(); auto bName = b->fileinfo().completeBaseName(); return aName.localeAwareCompare(bName) < 0; diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index 45d1db59..95bd5648 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -251,7 +251,7 @@ bool ResourceFolderModel::update() return true; } -void ResourceFolderModel::resolveResource(Resource::Ptr res) +void ResourceFolderModel::resolveResource(Resource* res) { if (!res->shouldResolve()) { return; diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index 5652c156..7edbe030 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -68,7 +68,7 @@ class ResourceFolderModel : public QAbstractListModel { virtual bool update(); /** Creates a new parse task, if needed, for 'res' and start it.*/ - virtual void resolveResource(Resource::Ptr res); + virtual void resolveResource(Resource* res); [[nodiscard]] size_t size() const { return m_resources.size(); }; [[nodiscard]] bool empty() const { return size() == 0; } @@ -265,7 +265,7 @@ void ResourceFolderModel::applyUpdates(QSet<QString>& current_set, QSet<QString> } m_resources[row].reset(new_resource); - resolveResource(m_resources.at(row)); + resolveResource(m_resources[row].get()); emit dataChanged(index(row, 0), index(row, columnCount(QModelIndex()) - 1)); } } @@ -313,7 +313,7 @@ void ResourceFolderModel::applyUpdates(QSet<QString>& current_set, QSet<QString> for (auto& added : added_set) { auto res = new_resources[added]; m_resources.append(res); - resolveResource(res); + resolveResource(m_resources.last().get()); } endInsertRows(); diff --git a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp b/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp index 40a6ba18..78ef4386 100644 --- a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp +++ b/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp @@ -99,7 +99,7 @@ void ModFolderLoadTask::executeTask() // Remove orphan metadata to prevent issues // See https://github.com/PolyMC/PolyMC/issues/996 if (m_clean_orphan) { - QMutableMapIterator<QString, Mod::Ptr> iter(m_result->mods); + QMutableMapIterator iter(m_result->mods); while (iter.hasNext()) { auto mod = iter.next().value(); if (mod->status() == ModStatus::NotInstalled) { |