From 653a688fe625c4592f6fe702fbdd388caa3e125d Mon Sep 17 00:00:00 2001 From: WerWolv Date: Tue, 14 Jun 2022 10:29:41 +0200 Subject: [PATCH] fix: Very inefficient iterating over static array patterns Fixes #532 --- lib/external/pattern_language | 2 +- plugins/builtin/include/pattern_drawer.hpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index efaf1b20f..16b658dca 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit efaf1b20f117a09cd918905f04cdf18c0bae6f7f +Subproject commit 16b658dca695aad640e5a41bde067d2cfa75c058 diff --git a/plugins/builtin/include/pattern_drawer.hpp b/plugins/builtin/include/pattern_drawer.hpp index 505c10311..027bd20c4 100644 --- a/plugins/builtin/include/pattern_drawer.hpp +++ b/plugins/builtin/include/pattern_drawer.hpp @@ -7,8 +7,8 @@ namespace hex { template - concept ArrayPattern = requires(T pattern, std::function fn) { - { pattern.forEachArrayEntry(fn) } -> std::same_as; + concept ArrayPattern = requires(u64 displayEnd, T pattern, std::function fn) { + { pattern.forEachArrayEntry(displayEnd, fn) } -> std::same_as; }; class PatternDrawer : public pl::PatternVisitor { @@ -48,7 +48,7 @@ namespace hex { if (opened) { auto& displayEnd = this->getDisplayEnd(pattern); - pattern.forEachArrayEntry([&] (u64 idx, auto &entry){ + pattern.forEachArrayEntry(displayEnd, [&] (u64 idx, auto &entry){ this->drawArrayNode(idx, displayEnd, entry); }); }