LibWeb: Don't crash when converting small CSS::Ratio to CSSPixelFraction

Previously, a crash would occur in the if `CSSPixelFraction` was given a
denominator value less than the resolution of `CSSPixels` (1/64).

We now divide both parts of the ratio by the denominator in this case.
This commit is contained in:
Tim Ledbetter 2024-08-22 10:36:03 +01:00 committed by Andreas Kling
commit 2c5d626b21
Notes: github-actions[bot] 2024-08-22 11:50:33 +00:00
4 changed files with 27 additions and 1 deletions

View file

@ -320,6 +320,20 @@ public:
VERIFY(denominator != 0);
}
template<FloatingPoint F>
constexpr CSSPixelFraction(F numerator, F denominator = 1)
{
if (CSSPixels::nearest_value_for(denominator) == 0) {
numerator = numerator / denominator;
denominator = 1;
}
m_numerator = CSSPixels(numerator);
m_denominator = CSSPixels(denominator);
VERIFY(denominator != 0);
}
constexpr operator CSSPixels() const
{
i64 wide_value = m_numerator.raw_value();