From 3f599ea60908fd44b15f40920a48bfff789917c6 Mon Sep 17 00:00:00 2001 From: Rasmus Karlsson Date: Mon, 15 Jan 2024 23:13:14 +0100 Subject: [PATCH] Remove getPaths() usage from CrashHandler --- src/Application.cpp | 2 +- src/main.cpp | 2 +- src/singletons/CrashHandler.cpp | 17 +++++++++++------ src/singletons/CrashHandler.hpp | 8 +++++++- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Application.cpp b/src/Application.cpp index 719c91ea8..b49981a49 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -120,7 +120,7 @@ Application::Application(Settings &_settings, const Paths &paths, , toasts(&this->emplace()) , imageUploader(&this->emplace()) , seventvAPI(&this->emplace()) - , crashHandler(&this->emplace()) + , crashHandler(&this->emplace(new CrashHandler(paths))) , commands(&this->emplace()) , notifications(&this->emplace()) diff --git a/src/main.cpp b/src/main.cpp index 0555efb10..15d9e3c9f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -65,7 +65,7 @@ int main(int argc, char **argv) const Args args(a, *paths); #ifdef CHATTERINO_WITH_CRASHPAD - const auto crashpadHandler = installCrashHandler(args); + const auto crashpadHandler = installCrashHandler(args, *paths); #endif // run in gui mode or browser extension host mode diff --git a/src/singletons/CrashHandler.cpp b/src/singletons/CrashHandler.cpp index 6d54212d4..84f19793c 100644 --- a/src/singletons/CrashHandler.cpp +++ b/src/singletons/CrashHandler.cpp @@ -128,7 +128,12 @@ namespace chatterino { using namespace std::string_literals; -void CrashHandler::initialize(Settings & /*settings*/, const Paths &paths) +CrashHandler::CrashHandler(const Paths &paths_) + : paths(paths_) +{ +} + +void CrashHandler::initialize(Settings & /*settings*/, const Paths &paths_) { auto optSettings = readRecoverySettings(paths); if (optSettings) @@ -146,7 +151,7 @@ void CrashHandler::saveShouldRecover(bool value) { this->shouldRecover_ = value; - QFile file(QDir(getPaths()->crashdumpDirectory).filePath(RECOVERY_FILE)); + QFile file(QDir(this->paths.crashdumpDirectory).filePath(RECOVERY_FILE)); if (!file.open(QFile::WriteOnly | QFile::Truncate)) { qCWarning(chatterinoCrashhandler) @@ -160,7 +165,8 @@ void CrashHandler::saveShouldRecover(bool value) } #ifdef CHATTERINO_WITH_CRASHPAD -std::unique_ptr installCrashHandler(const Args &args) +std::unique_ptr installCrashHandler( + const Args &args, const Paths &paths) { // Currently, the following directory layout is assumed: // [applicationDirPath] @@ -188,15 +194,14 @@ std::unique_ptr installCrashHandler(const Args &args) // Argument passed in --database // > Crash reports are written to this database, and if uploads are enabled, // uploaded from this database to a crash report collection server. - auto databaseDir = - base::FilePath(nativeString(getPaths()->crashdumpDirectory)); + auto databaseDir = base::FilePath(nativeString(paths.crashdumpDirectory)); auto client = std::make_unique(); std::map annotations{ { "canRestart"s, - canRestart(*getPaths(), args) ? "true"s : "false"s, + canRestart(paths, args) ? "true"s : "false"s, }, { "exePath"s, diff --git a/src/singletons/CrashHandler.hpp b/src/singletons/CrashHandler.hpp index 0398077a4..9fbdf358c 100644 --- a/src/singletons/CrashHandler.hpp +++ b/src/singletons/CrashHandler.hpp @@ -13,10 +13,15 @@ namespace chatterino { class Args; +class Paths; class CrashHandler : public Singleton { + const Paths &paths; + public: + explicit CrashHandler(const Paths &paths_); + bool shouldRecover() const { return this->shouldRecover_; @@ -32,7 +37,8 @@ private: }; #ifdef CHATTERINO_WITH_CRASHPAD -std::unique_ptr installCrashHandler(const Args &args); +std::unique_ptr installCrashHandler( + const Args &args, const Paths &paths); #endif } // namespace chatterino