Issue #3109 - Clamp border-radius value to Int32.MaxValue

This avoids artifacts from out-of-bounds values.
Resolves #3109
This commit is contained in:
Moonchild 2026-05-29 22:53:43 +02:00 committed by wuggy
commit 3ad2791ea1

View file

@ -8157,11 +8157,14 @@ nsRuleNode::ComputeBorderData(void* aStartStruct,
NS_FOR_CSS_FULL_CORNERS(corner) { NS_FOR_CSS_FULL_CORNERS(corner) {
int cx = FullToHalfCorner(corner, false); int cx = FullToHalfCorner(corner, false);
int cy = FullToHalfCorner(corner, true); int cy = FullToHalfCorner(corner, true);
const nsCSSValue& radius = *aRuleData->ValueFor(subprops[corner]); nsCSSValue radius = *aRuleData->ValueFor(subprops[corner]);
nsStyleCoord parentX = parentBorder->mBorderRadius.Get(cx); nsStyleCoord parentX = parentBorder->mBorderRadius.Get(cx);
nsStyleCoord parentY = parentBorder->mBorderRadius.Get(cy); nsStyleCoord parentY = parentBorder->mBorderRadius.Get(cy);
nsStyleCoord coordX, coordY; nsStyleCoord coordX, coordY;
// Clamp border radius to the max value so it will not wrap and cause artifacts.
if (radius.GetFloatValue() > RADIUS_MAX) {
radius.SetFloatValue(RADIUS_MAX, eCSSUnit_Number);
}
if (SetPairCoords(radius, coordX, coordY, parentX, parentY, if (SetPairCoords(radius, coordX, coordY, parentX, parentY,
SETCOORD_LPH | SETCOORD_INITIAL_ZERO | SETCOORD_LPH | SETCOORD_INITIAL_ZERO |
SETCOORD_STORE_CALC | SETCOORD_UNSET_INITIAL, SETCOORD_STORE_CALC | SETCOORD_UNSET_INITIAL,