From 564ae6dd8c2ccbd530f68fbf988287b810df6adb Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sat, 22 Jul 2023 19:35:58 +0200 Subject: [PATCH] fix: Crash when loading bad font --- main/source/init/tasks.cpp | 12 ++++++++++-- plugins/builtin/source/content/settings_entries.cpp | 3 --- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/main/source/init/tasks.cpp b/main/source/init/tasks.cpp index ea2035ec5..60c958c21 100644 --- a/main/source/init/tasks.cpp +++ b/main/source/init/tasks.cpp @@ -193,6 +193,8 @@ namespace hex::init { } static bool loadFontsImpl(bool loadUnicode) { + const float defaultFontSize = ImHexApi::System::DefaultFontSize * std::round(ImHexApi::System::getGlobalScale()); + // Load font related settings { std::fs::path fontFile = ContentRegistry::Settings::read("hex.builtin.setting.font", "hex.builtin.setting.font.font_path", ""); @@ -215,7 +217,7 @@ namespace hex::init { ImHexApi::System::impl::setCustomFontPath(fontFile); // If a custom font has been loaded now, also load the font size - float fontSize = ImHexApi::System::DefaultFontSize * std::round(ImHexApi::System::getGlobalScale()); + float fontSize = defaultFontSize; if (!fontFile.empty()) { fontSize = ContentRegistry::Settings::read("hex.builtin.setting.font", "hex.builtin.setting.font.font_size", 13) * ImHexApi::System::getGlobalScale(); } @@ -281,7 +283,13 @@ namespace hex::init { fonts->Clear(); fonts->AddFontDefault(&cfg); } else { - fonts->AddFontFromFileTTF(wolv::util::toUTF8String(fontFile).c_str(), 0, &cfg, ranges.Data); + auto font = fonts->AddFontFromFileTTF(wolv::util::toUTF8String(fontFile).c_str(), 0, &cfg, ranges.Data); + if (font == nullptr || font->ContainerAtlas == nullptr) { + ImHexApi::System::impl::setFontSize(defaultFontSize); + cfg.SizePixels = defaultFontSize; + fonts->Clear(); + fonts->AddFontDefault(&cfg); + } } // Merge all fonts into one big font atlas diff --git a/plugins/builtin/source/content/settings_entries.cpp b/plugins/builtin/source/content/settings_entries.cpp index 9ed6adc68..646c23c44 100644 --- a/plugins/builtin/source/content/settings_entries.cpp +++ b/plugins/builtin/source/content/settings_entries.cpp @@ -180,9 +180,6 @@ namespace hex::plugin::builtin { if (ImGui::Combo(name.data(), &selection, scaling, IM_ARRAYSIZE(scaling))) { setting = selection; - - ImHexApi::System::restartImHex(); - return true; }