From 444929adbfa090f1b20fbf4c6f3a832bb4a826cd Mon Sep 17 00:00:00 2001 From: James Lindsay <78500760+0HyperCube@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:12:02 +0100 Subject: [PATCH] Fix crash from gradients with bounds of zero (#1950) Fix zero bound gradient --- node-graph/gcore/src/vector/style.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/node-graph/gcore/src/vector/style.rs b/node-graph/gcore/src/vector/style.rs index 4570dc79..a1e24b72 100644 --- a/node-graph/gcore/src/vector/style.rs +++ b/node-graph/gcore/src/vector/style.rs @@ -163,8 +163,12 @@ impl Gradient { stop.push_str(" />") } - let mod_gradient = transformed_bound_transform.inverse(); - let mod_points = mod_gradient.inverse() * transformed_bound_transform.inverse() * updated_transform; + let mod_gradient = if transformed_bound_transform.matrix2.determinant() != 0. { + transformed_bound_transform.inverse() + } else { + DAffine2::IDENTITY // Ignore if the transform cannot be inverted (the bounds are zero). See issue #1944. + }; + let mod_points = updated_transform; let start = mod_points.transform_point2(self.start); let end = mod_points.transform_point2(self.end);