From 1eb2aed9ae50d9e0b4797411490822c5e1c241d1 Mon Sep 17 00:00:00 2001 From: sideshowbarker Date: Tue, 17 Mar 2026 22:26:58 +0900 Subject: [PATCH] fix: Handle calc() with number type in CSS position checking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: A conic-gradient() position containing a calc() that resolves to a number causes a ClassCastException to be thrown. Cause: CssCalc.getLength() only handled computed_type == CSS_LENGTH. When CssBackgroundPosition.checkSyntax() calls getLength() on a calc with computed_type == CSS_NUMBER, it falls through to the throw. Fix: Delegate to the inner value’s getLength() when computed_type is CSS_NUMBER, matching how CssNumber.getLength() handles the zero-check. --- org/w3c/css/values/CssCalc.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/org/w3c/css/values/CssCalc.java b/org/w3c/css/values/CssCalc.java index ae203c3e5..e2b5246bb 100644 --- a/org/w3c/css/values/CssCalc.java +++ b/org/w3c/css/values/CssCalc.java @@ -410,6 +410,14 @@ public CssLength getLength() throws InvalidParamException { return val2.getLength(); } } + if (computed_type == CssTypes.CSS_NUMBER) { + if (val1.getType() == CssTypes.CSS_NUMBER) { + return val1.getLength(); + } + if (val2.getType() == CssTypes.CSS_NUMBER) { + return val2.getLength(); + } + } throw new ClassCastException("unknown"); }