|
@@ -4691,13 +4691,16 @@ RefPtr<CSS::StyleValue> parse_dimension_value(StringView string)
|
|
number_string.append(*position);
|
|
number_string.append(*position);
|
|
++position;
|
|
++position;
|
|
}
|
|
}
|
|
- auto integer_value = number_string.string_view().to_number<int>();
|
|
|
|
|
|
+ auto integer_value = number_string.string_view().to_number<double>();
|
|
|
|
+
|
|
|
|
+ // NOTE: This is apparently the largest value allowed by Firefox.
|
|
|
|
+ static float max_dimension_value = 17895700;
|
|
|
|
+
|
|
|
|
+ float value = min(*integer_value, max_dimension_value);
|
|
|
|
|
|
// 6. If position is past the end of input, then return value as a length.
|
|
// 6. If position is past the end of input, then return value as a length.
|
|
if (position == input.end())
|
|
if (position == input.end())
|
|
- return CSS::LengthStyleValue::create(CSS::Length::make_px(*integer_value));
|
|
|
|
-
|
|
|
|
- float value = *integer_value;
|
|
|
|
|
|
+ return CSS::LengthStyleValue::create(CSS::Length::make_px(CSSPixels(value)));
|
|
|
|
|
|
// 7. If the code point at position within input is U+002E (.), then:
|
|
// 7. If the code point at position within input is U+002E (.), then:
|
|
if (*position == '.') {
|
|
if (*position == '.') {
|