1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-03 13:08:14 +00:00

LibWeb: Add missing paintable null check in get_bounding_client_rect()

Fixes crashing on https://github.com/
This commit is contained in:
Aliaksandr Kalenik 2023-12-16 15:18:56 +01:00 committed by Andreas Kling
parent f361b8c000
commit 8f8ec37d58
3 changed files with 15 additions and 1 deletions

View file

@ -0,0 +1 @@
{"x":0,"y":0,"width":0,"height":0,"top":0,"right":0,"bottom":0,"left":0}

View file

@ -0,0 +1,12 @@
<!DOCTYPE html>
<style type="text/css">
#box { display: none; }
</style>
<div id="box"></div>
<script src="include.js"></script>
<script>
test(() => {
const rect = document.getElementById("box").getBoundingClientRect();
println(JSON.stringify(rect));
});
</script>

View file

@ -844,7 +844,8 @@ JS::NonnullGCPtr<Geometry::DOMRect> Element::get_bounding_client_rect() const
return Geometry::DOMRect::create(realm(), absolute_rect.to_type<float>()); return Geometry::DOMRect::create(realm(), absolute_rect.to_type<float>());
} }
if (auto const* paintable = this->paintable(); is<Painting::InlinePaintable>(*paintable)) { auto const* paintable = this->paintable();
if (paintable && is<Painting::InlinePaintable>(*paintable)) {
auto const& inline_paintable = static_cast<Painting::InlinePaintable const&>(*paintable); auto const& inline_paintable = static_cast<Painting::InlinePaintable const&>(*paintable);
auto absolute_rect = inline_paintable.bounding_rect(); auto absolute_rect = inline_paintable.bounding_rect();
absolute_rect.translate_by(-viewport_offset.x(), -viewport_offset.y()); absolute_rect.translate_by(-viewport_offset.x(), -viewport_offset.y());