aboutsummaryrefslogtreecommitdiff
path: root/launcher/minecraft
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2022-12-26 17:48:43 +0100
committerGitHub <noreply@github.com>2022-12-26 17:48:43 +0100
commit6ea1234a3bb9787a77680ff528f21bdf1e40989c (patch)
tree1385918c5819df035dd5bd7b8f6bab7fc534c396 /launcher/minecraft
parentdd3848d7b161e415c34c3c1c393985b644a88f1c (diff)
parent434f639b0c9af355703d6c64cfe5bbe9a28d0b9b (diff)
downloadPrismLauncher-6ea1234a3bb9787a77680ff528f21bdf1e40989c.tar.gz
PrismLauncher-6ea1234a3bb9787a77680ff528f21bdf1e40989c.tar.bz2
PrismLauncher-6ea1234a3bb9787a77680ff528f21bdf1e40989c.zip
Merge pull request #618 from TheKodeToad/safer-destructive-actions
Fixes https://github.com/PolyMC/PolyMC/issues/948
Diffstat (limited to 'launcher/minecraft')
-rw-r--r--launcher/minecraft/World.cpp7
-rw-r--r--launcher/minecraft/mod/Resource.cpp4
2 files changed, 10 insertions, 1 deletions
diff --git a/launcher/minecraft/World.cpp b/launcher/minecraft/World.cpp
index 90fcf337..d310f8b9 100644
--- a/launcher/minecraft/World.cpp
+++ b/launcher/minecraft/World.cpp
@@ -1,7 +1,8 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
- * PolyMC - Minecraft Launcher
+ * Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
+ * Copyright (C) 2022 TheKodeToad <TheKodeToad@proton.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -545,6 +546,10 @@ bool World::replace(World &with)
bool World::destroy()
{
if(!is_valid) return false;
+
+ if (FS::trash(m_containerFile.filePath()))
+ return true;
+
if (m_containerFile.isDir())
{
QDir d(m_containerFile.filePath());
diff --git a/launcher/minecraft/mod/Resource.cpp b/launcher/minecraft/mod/Resource.cpp
index 0fbcfd7c..7c572d92 100644
--- a/launcher/minecraft/mod/Resource.cpp
+++ b/launcher/minecraft/mod/Resource.cpp
@@ -143,5 +143,9 @@ bool Resource::enable(EnableAction action)
bool Resource::destroy()
{
m_type = ResourceType::UNKNOWN;
+
+ if (FS::trash(m_file_info.filePath()))
+ return true;
+
return FS::deletePath(m_file_info.filePath());
}