From 1ec0548158e45b4f5d5618a2f543c2864d75cfc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Thu, 15 Dec 2022 15:15:27 +0100 Subject: [PATCH] Help: Only toggle open/close for SectionNodes The responsible code was actually casting everything to a SectionNode pointer, violating type safety all over the place and leading to frequent crashes. I'm surprised this was not exhibited before; I guess my recent changes made this bug surface. --- Userland/Applications/Help/ManualModel.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Userland/Applications/Help/ManualModel.cpp b/Userland/Applications/Help/ManualModel.cpp index bc5cce4879..1ad9fcf4dd 100644 --- a/Userland/Applications/Help/ManualModel.cpp +++ b/Userland/Applications/Help/ManualModel.cpp @@ -178,8 +178,9 @@ GUI::Variant ManualModel::data(const GUI::ModelIndex& index, GUI::ModelRole role void ManualModel::update_section_node_on_toggle(const GUI::ModelIndex& index, bool const open) { - auto* node = static_cast(index.internal_data()); - node->set_open(open); + auto* node = static_cast(index.internal_data()); + if (is(*node)) + static_cast(node)->set_open(open); } TriState ManualModel::data_matches(const GUI::ModelIndex& index, const GUI::Variant& term) const