From 678dfa8f75fdc0b0d68be0217c233f79c012a7ce Mon Sep 17 00:00:00 2001 From: MacDue Date: Mon, 19 Dec 2022 13:25:49 +0000 Subject: [PATCH] Ladybird: Close inspector and JS console when tab closes Keeping these around can lead to use-after-frees and crashes. --- Ladybird/WebContentView.cpp | 12 ++++++++---- Ladybird/WebContentView.h | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Ladybird/WebContentView.cpp b/Ladybird/WebContentView.cpp index cb49bc5b75..5dd9e2c7af 100644 --- a/Ladybird/WebContentView.cpp +++ b/Ladybird/WebContentView.cpp @@ -77,7 +77,7 @@ WebContentView::WebContentView(StringView webdriver_content_ipc_path) WebContentView::~WebContentView() { - clear_inspector_callbacks(); + close_sub_widgets(); } void WebContentView::load(AK::URL const& url) @@ -515,10 +515,14 @@ void WebContentView::ensure_inspector_widget() }; } -void WebContentView::clear_inspector_callbacks() +void WebContentView::close_sub_widgets() { - if (m_inspector_widget) - m_inspector_widget->on_close = nullptr; + auto close_widget_window = [](auto* widget) { + if (widget) + widget->close(); + }; + close_widget_window(m_console_widget); + close_widget_window(m_inspector_widget); } bool WebContentView::is_inspector_open() const diff --git a/Ladybird/WebContentView.h b/Ladybird/WebContentView.h index 9bd2a463ad..83abdfb4d7 100644 --- a/Ladybird/WebContentView.h +++ b/Ladybird/WebContentView.h @@ -192,7 +192,7 @@ private: bool is_inspector_open() const; void inspect_dom_tree(); void clear_inspected_dom_node(); - void clear_inspector_callbacks(); + void close_sub_widgets(); ErrorOr inspect_dom_node(i32 node_id, Optional pseudo_element); qreal m_inverse_pixel_scaling_ratio { 1.0 };