Bläddra i källkod

Show message to player instead of crashing silently on extraction error

Ivan Savenko 1 år sedan
förälder
incheckning
5bc103f50e
2 ändrade filer med 10 tillägg och 4 borttagningar
  1. 9 3
      launcher/modManager/cmodmanager.cpp
  2. 1 1
      lib/filesystem/CZipLoader.cpp

+ 9 - 3
launcher/modManager/cmodmanager.cpp

@@ -26,9 +26,15 @@ namespace
 {
 QString detectModArchive(QString path, QString modName, std::vector<std::string> & filesToExtract)
 {
-	ZipArchive archive(qstringToPath(path));
-
-	filesToExtract = archive.listFiles();
+	try {
+		ZipArchive archive(qstringToPath(path));
+		filesToExtract = archive.listFiles();
+	}
+	catch (const std::runtime_error & e)
+	{
+		logGlobal->error("Failed to open zip archive. Reason: %s", e.what());
+		return "";
+	}
 
 	QString modDirName;
 

+ 1 - 1
lib/filesystem/CZipLoader.cpp

@@ -191,7 +191,7 @@ ZipArchive::ZipArchive(const boost::filesystem::path & from)
 #endif
 
 	if (archive == nullptr)
-		throw std::runtime_error("Failed to open file '" + from.string() + "' - unable to list files!");
+		throw std::runtime_error("Failed to open file '" + from.string());
 }
 
 ZipArchive::~ZipArchive()