From acbd0576806b5ca91679a386e82f60b0e78d4b47 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Thu, 9 Oct 2025 19:11:50 +0200 Subject: [PATCH] Fix #147680: Crash when voxel size is too small These grid creation functions can return a grid without data when certain parameters are invalid. The "set_output" function of the geometry node execution parameters asserts that the data is not null, so I assume this is invalid and causes crashes later on. Pull Request: https://projects.blender.org/blender/blender/pulls/147741 --- .../nodes/geometry/nodes/node_geo_mesh_to_density_grid.cc | 4 ++++ .../blender/nodes/geometry/nodes/node_geo_mesh_to_sdf_grid.cc | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_density_grid.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_density_grid.cc index 445128dd100..4240efb2d27 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_density_grid.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_density_grid.cc @@ -50,6 +50,10 @@ static void node_geo_exec(GeoNodeExecParams params) params.extract_input("Voxel Size"), params.extract_input("Gradient Width"), params.extract_input("Density")); + if (!grid) { + params.set_default_remaining_outputs(); + return; + } params.set_output("Density Grid", std::move(grid)); #else node_geo_exec_with_missing_openvdb(params); diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_sdf_grid.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_sdf_grid.cc index 1a47d305437..7229d534c02 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_sdf_grid.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_sdf_grid.cc @@ -45,6 +45,10 @@ static void node_geo_exec(GeoNodeExecParams params) mesh->corner_tris(), params.extract_input("Voxel Size"), std::max(1, params.extract_input("Band Width"))); + if (!grid) { + params.set_default_remaining_outputs(); + return; + } params.set_output("SDF Grid", std::move(grid)); #else node_geo_exec_with_missing_openvdb(params);