From b3b9ac62011d971ad9fb24b5a78297e9c10d9224 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 25 Mar 2023 17:33:22 +0100 Subject: [PATCH] LibWeb: Add FIXME whining to debug log if layout produces negative sizes Negative width/height sizes are not allowed in CSS, so if our layout algorithm resolves something to a negative size, we have boogs. Instead of crashing or rendering something very wrong, we now clamp the values to 0 and whine on the debug log so that someone can go and figure out how we got the negative values in the first place. :^) --- Userland/Libraries/LibWeb/Layout/LayoutState.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Userland/Libraries/LibWeb/Layout/LayoutState.cpp b/Userland/Libraries/LibWeb/Layout/LayoutState.cpp index 0daee83ab7..0b68f3edf1 100644 --- a/Userland/Libraries/LibWeb/Layout/LayoutState.cpp +++ b/Userland/Libraries/LibWeb/Layout/LayoutState.cpp @@ -326,12 +326,22 @@ void LayoutState::UsedValues::set_node(NodeWithStyleAndBoxModelMetrics& node, Us void LayoutState::UsedValues::set_content_width(CSSPixels width) { + if (width < 0) { + // Negative heights are not allowed in CSS. We have a bug somewhere! Clamp to 0 to avoid doing too much damage. + dbgln("FIXME: Layout calculated a negative width for {}: {}", m_node->debug_description(), width); + width = 0; + } m_content_width = width; m_has_definite_width = true; } void LayoutState::UsedValues::set_content_height(CSSPixels height) { + if (height < 0) { + // Negative heights are not allowed in CSS. We have a bug somewhere! Clamp to 0 to avoid doing too much damage. + dbgln("FIXME: Layout calculated a negative height for {}: {}", m_node->debug_description(), height); + height = 0; + } m_content_height = height; m_has_definite_height = true; }