summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--logic/minecraft/InstanceVersion.cpp7
-rw-r--r--logic/minecraft/VersionBuilder.cpp8
2 files changed, 12 insertions, 3 deletions
diff --git a/logic/minecraft/InstanceVersion.cpp b/logic/minecraft/InstanceVersion.cpp
index e71609e6..addbcc84 100644
--- a/logic/minecraft/InstanceVersion.cpp
+++ b/logic/minecraft/InstanceVersion.cpp
@@ -85,7 +85,8 @@ bool InstanceVersion::remove(const int index)
{
return false;
}
- if(!QFile::remove(VersionPatches.at(index)->getPatchFilename()))
+ auto toDelete = VersionPatches.at(index)->getPatchFilename();
+ if(!QFile::remove(toDelete))
return false;
beginRemoveRows(QModelIndex(), index, index);
VersionPatches.removeAt(index);
@@ -504,8 +505,10 @@ void InstanceVersion::installJarModByFilename(QString filepath)
f->name = target_name;
f->fileId = target_id;
f->order = getFreeOrderNumber();
+ QString patchFileName = PathCombine(patchDir, target_id + ".json");
+ f->filename = patchFileName;
- QFile file(PathCombine(patchDir, target_id + ".json"));
+ QFile file(patchFileName);
if (!file.open(QFile::WriteOnly))
{
QLOG_ERROR() << "Error opening" << file.fileName()
diff --git a/logic/minecraft/VersionBuilder.cpp b/logic/minecraft/VersionBuilder.cpp
index 66e7d327..fea0c8d1 100644
--- a/logic/minecraft/VersionBuilder.cpp
+++ b/logic/minecraft/VersionBuilder.cpp
@@ -111,8 +111,14 @@ void VersionBuilder::readInstancePatches()
continue;
// parse the file
QString filename = patches.absoluteFilePath(id + ".json");
+ QFileInfo finfo(filename);
+ if(!finfo.exists())
+ {
+ QLOG_INFO() << "Patch file " << filename << " was deleted by external means...";
+ continue;
+ }
QLOG_INFO() << "Reading" << filename << "by user order";
- auto file = parseJsonFile(QFileInfo(filename), false);
+ auto file = parseJsonFile(finfo, false);
// sanity check. prevent tampering with files.
if (file->fileId != id)
{