diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 001d596d8..4f6ef7a44 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 001d596d8108454b63ce02747ed79be4b3fdbe16 +Subproject commit 4f6ef7a444a976e7e0092c6a0eda10968d2edc3a diff --git a/plugins/builtin/source/content/views/view_pattern_data.cpp b/plugins/builtin/source/content/views/view_pattern_data.cpp index e06e1e8ce..b89580d30 100644 --- a/plugins/builtin/source/content/views/view_pattern_data.cpp +++ b/plugins/builtin/source/content/views/view_pattern_data.cpp @@ -80,7 +80,7 @@ namespace hex::plugin::builtin { auto sortSpecs = ImGui::TableGetSortSpecs(); - if (sortSpecs->SpecsDirty || sortedPatterns.empty()) { + if (!patterns.empty() && (sortSpecs->SpecsDirty || sortedPatterns.empty())) { sortedPatterns.clear(); std::transform(patterns.begin(), patterns.end(), std::back_inserter(sortedPatterns), [](const std::shared_ptr &pattern) { return pattern.get(); @@ -110,18 +110,25 @@ namespace hex::plugin::builtin { auto provider = ImHexApi::Provider::get(); auto &patternLanguage = ProviderExtraData::get(provider).patternLanguage; - if (provider->isReadable() && patternLanguage.runtime != nullptr && patternLanguage.executionDone) { - auto &sortedPatterns = this->m_sortedPatterns[ImHexApi::Provider::get()]; - if (beginPatternTable(provider, ProviderExtraData::get(provider).patternLanguage.runtime->getAllPatterns(), sortedPatterns)) { - ImGui::TableHeadersRow(); - - if (!sortedPatterns.empty()) { - for (auto &patterns : sortedPatterns) - patterns->accept(this->m_patternDrawer); - } - - ImGui::EndTable(); + const auto &patterns = [&] -> const auto& { + if (provider->isReadable() && patternLanguage.runtime != nullptr && patternLanguage.executionDone) + return ProviderExtraData::get(provider).patternLanguage.runtime->getAllPatterns(); + else { + static const std::vector> empty; + return empty; } + }(); + + auto &sortedPatterns = this->m_sortedPatterns[ImHexApi::Provider::get()]; + if (beginPatternTable(provider, patterns, sortedPatterns)) { + ImGui::TableHeadersRow(); + + if (!sortedPatterns.empty()) { + for (auto &pattern : sortedPatterns) + pattern->accept(this->m_patternDrawer); + } + + ImGui::EndTable(); } } }