From c20634e093ac7b4868c97f31a989acb33fb26a85 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sat, 16 Jul 2022 12:14:15 +0200 Subject: [PATCH] sys: Fixed crash on exit --- .../include/content/views/view_pattern_data.hpp | 2 +- .../builtin/source/content/views/view_pattern_data.cpp | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/plugins/builtin/include/content/views/view_pattern_data.hpp b/plugins/builtin/include/content/views/view_pattern_data.hpp index be7b91a46..834d9b102 100644 --- a/plugins/builtin/include/content/views/view_pattern_data.hpp +++ b/plugins/builtin/include/content/views/view_pattern_data.hpp @@ -21,7 +21,7 @@ namespace hex::plugin::builtin { void drawContent() override; private: - std::map>> m_sortedPatterns; + std::map> m_sortedPatterns; hex::PatternDrawer m_patternDrawer; }; diff --git a/plugins/builtin/source/content/views/view_pattern_data.cpp b/plugins/builtin/source/content/views/view_pattern_data.cpp index 581c456c3..eefcd815d 100644 --- a/plugins/builtin/source/content/views/view_pattern_data.cpp +++ b/plugins/builtin/source/content/views/view_pattern_data.cpp @@ -67,7 +67,7 @@ namespace hex::plugin::builtin { return false; } - static bool beginPatternTable(prv::Provider *&provider, const std::vector> &patterns, std::vector> &sortedPatterns) { + static bool beginPatternTable(prv::Provider *&provider, const std::vector> &patterns, std::vector &sortedPatterns) { if (ImGui::BeginTable("##Patterntable", 6, ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_Sortable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_RowBg | ImGuiTableFlags_ScrollY)) { ImGui::TableSetupScrollFreeze(0, 1); ImGui::TableSetupColumn("hex.builtin.view.pattern_data.var_name"_lang, 0, 0, ImGui::GetID("name")); @@ -80,10 +80,12 @@ namespace hex::plugin::builtin { auto sortSpecs = ImGui::TableGetSortSpecs(); if (sortSpecs->SpecsDirty || sortedPatterns.empty()) { - sortedPatterns = patterns; + std::transform(patterns.begin(), patterns.end(), std::back_inserter(sortedPatterns), [](const std::shared_ptr &pattern) { + return pattern.get(); + }); - std::sort(sortedPatterns.begin(), sortedPatterns.end(), [&sortSpecs, &provider](const std::shared_ptr &left, const std::shared_ptr &right) -> bool { - return sortPatterns(provider, sortSpecs, left.get(), right.get()); + std::sort(sortedPatterns.begin(), sortedPatterns.end(), [&sortSpecs, &provider](pl::Pattern *left, pl::Pattern *right) -> bool { + return sortPatterns(provider, sortSpecs, left, right); }); for (auto &pattern : sortedPatterns)