From 874619f62e3bb412f577b0f9f816a71dc4952ad8 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Wed, 27 Dec 2023 16:53:03 +0100 Subject: [PATCH] impr: Harden settings store function --- lib/libimhex/source/api/content_registry.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/libimhex/source/api/content_registry.cpp b/lib/libimhex/source/api/content_registry.cpp index 04263cc14..2fae642ef 100644 --- a/lib/libimhex/source/api/content_registry.cpp +++ b/lib/libimhex/source/api/content_registry.cpp @@ -89,16 +89,21 @@ namespace hex { } void store() { + auto settingsData = getSettingsData(); + // During a crash settings can be empty, causing them to be overwritten. - if(getSettingsData().empty()) { + if (settingsData.empty()) { return; } for (const auto &dir : fs::getDefaultPaths(fs::ImHexPath::Config)) { - wolv::io::File file(dir / SettingsFile, wolv::io::File::Mode::Create); + wolv::io::File file(dir / SettingsFile, wolv::io::File::Mode::Write); if (file.isValid()) { - file.writeString(getSettingsData().dump(4)); + auto result = settingsData.dump(4); + + file.setSize(0); + file.writeString(result); break; } }