From 8f8ec37d5890dedbaeacaa3cf224ccd1abe29bd6 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Sat, 16 Dec 2023 15:18:56 +0100 Subject: [PATCH] LibWeb: Add missing paintable null check in get_bounding_client_rect() Fixes crashing on https://github.com/ --- .../get-bounding-client-rect-display-none.txt | 1 + .../input/get-bounding-client-rect-display-none.html | 12 ++++++++++++ Userland/Libraries/LibWeb/DOM/Element.cpp | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 Tests/LibWeb/Text/expected/get-bounding-client-rect-display-none.txt create mode 100644 Tests/LibWeb/Text/input/get-bounding-client-rect-display-none.html diff --git a/Tests/LibWeb/Text/expected/get-bounding-client-rect-display-none.txt b/Tests/LibWeb/Text/expected/get-bounding-client-rect-display-none.txt new file mode 100644 index 0000000000..2a30e0bd75 --- /dev/null +++ b/Tests/LibWeb/Text/expected/get-bounding-client-rect-display-none.txt @@ -0,0 +1 @@ + {"x":0,"y":0,"width":0,"height":0,"top":0,"right":0,"bottom":0,"left":0} \ No newline at end of file diff --git a/Tests/LibWeb/Text/input/get-bounding-client-rect-display-none.html b/Tests/LibWeb/Text/input/get-bounding-client-rect-display-none.html new file mode 100644 index 0000000000..3569cbc879 --- /dev/null +++ b/Tests/LibWeb/Text/input/get-bounding-client-rect-display-none.html @@ -0,0 +1,12 @@ + + +
+ + diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index 998972c1a6..e416668ed5 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -844,7 +844,8 @@ JS::NonnullGCPtr Element::get_bounding_client_rect() const return Geometry::DOMRect::create(realm(), absolute_rect.to_type()); } - if (auto const* paintable = this->paintable(); is(*paintable)) { + auto const* paintable = this->paintable(); + if (paintable && is(*paintable)) { auto const& inline_paintable = static_cast(*paintable); auto absolute_rect = inline_paintable.bounding_rect(); absolute_rect.translate_by(-viewport_offset.x(), -viewport_offset.y());