From 6faaf5b58847825438d7b50ddfcccfbfeda847fa Mon Sep 17 00:00:00 2001 From: Taksh Date: Fri, 29 May 2026 06:09:50 +0530 Subject: [PATCH] fix(color): prevent NaN saturation in HSLA to HSBA at zero lightness Co-authored-by: Cursor --- src/color/color_conversion.js | 2 +- test/unit/color/color_conversion.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/color/color_conversion.js b/src/color/color_conversion.js index 850d24918b..d08225924a 100644 --- a/src/color/color_conversion.js +++ b/src/color/color_conversion.js @@ -113,7 +113,7 @@ p5.ColorConversion = { } // Convert saturation. - sat = 2 * (val - li) / val; + sat = val === 0 ? 0 : 2 * (val - li) / val; // Hue and alpha stay the same. return [hue, sat, val, hsla[3]]; diff --git a/test/unit/color/color_conversion.js b/test/unit/color/color_conversion.js index bd0ba27681..9ee59bd254 100644 --- a/test/unit/color/color_conversion.js +++ b/test/unit/color/color_conversion.js @@ -57,6 +57,12 @@ suite('color/p5.ColorConversion', function() { result = p5.ColorConversion._hslaToHSBA(hsla); assert.arrayApproximately(result, hsba, accuracy); }); + + test('zero lightness does not produce NaN saturation', function() { + result = p5.ColorConversion._hslaToHSBA([0, 1, 0, 1]); + assert.isFalse(isNaN(result[1])); + assert.strictEqual(result[1], 0); + }); }); suite('hsbaToHSLA', function() {