From c5d2739a39f44714738fd7bd1aae96c6b8842add Mon Sep 17 00:00:00 2001 From: WerWolv Date: Thu, 19 Jan 2023 11:09:24 +0100 Subject: [PATCH] fix: File provider sometimes not saving path to project file --- lib/libimhex/source/api/project_file_manager.cpp | 6 ++++-- .../builtin/source/content/providers/file_provider.cpp | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/libimhex/source/api/project_file_manager.cpp b/lib/libimhex/source/api/project_file_manager.cpp index 8670443f3..8f167b7a0 100644 --- a/lib/libimhex/source/api/project_file_manager.cpp +++ b/lib/libimhex/source/api/project_file_manager.cpp @@ -51,10 +51,12 @@ namespace hex { bool result = true; for (const auto &handler : ProjectFile::getHandlers()) { try { - if (!handler.load(handler.basePath, tar)) + if (!handler.load(handler.basePath, tar)) { + log::warn("Project file handler for {} failed to load {}", filePath.string(), handler.basePath.string()); result = false; + } } catch (std::exception &e) { - log::info("{}", e.what()); + log::warn("Project file handler for {} failed to load {}: {}", filePath.string(), handler.basePath.string(), e.what()); result = false; } diff --git a/plugins/builtin/source/content/providers/file_provider.cpp b/plugins/builtin/source/content/providers/file_provider.cpp index 758d603d6..8ff441de5 100644 --- a/plugins/builtin/source/content/providers/file_provider.cpp +++ b/plugins/builtin/source/content/providers/file_provider.cpp @@ -297,10 +297,13 @@ namespace hex::plugin::builtin { } nlohmann::json FileProvider::storeSettings(nlohmann::json settings) const { + std::string path; if (auto projectPath = ProjectFile::getPath(); !projectPath.empty()) - settings["path"] = hex::toUTF8String(std::fs::relative(this->m_path, projectPath.parent_path())); - else - settings["path"] = hex::toUTF8String(this->m_path); + path = hex::toUTF8String(std::fs::proximate(this->m_path, projectPath.parent_path())); + if (path.empty()) + path = hex::toUTF8String(this->m_path); + + settings["path"] = path; return Provider::storeSettings(settings); }