[Bf-blender-cvs] [5e3877e0c85] master: Fix T92149: Crash in delete geometry node after curve fill node

Wannes Malfait noreply at git.blender.org
Tue Oct 12 17:58:58 CEST 2021


Commit: 5e3877e0c8560f27a5cd7b303666b235fb148165
Author: Wannes Malfait
Date:   Tue Oct 12 10:58:38 2021 -0500
Branches: master
https://developer.blender.org/rB5e3877e0c8560f27a5cd7b303666b235fb148165

Fix T92149: Crash in delete geometry node after curve fill node

There was only a check for the component but not for if it was empty.
Because the curve fill node produces an empty curve component, a
nullptr was read, causing a crash. Generally nodes shouldn't produce
empty components, but currently we cannot rely on that fact.

Differential Revision: https://developer.blender.org/D12838

===================================================================

M	source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc

===================================================================

diff --git a/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc b/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
index e4f6d3d766e..25f0d355c9e 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
@@ -1156,19 +1156,19 @@ void separate_geometry(GeometrySet &geometry_set,
                        bool &r_is_error)
 {
   bool some_valid_domain = false;
-  if (geometry_set.has<PointCloudComponent>()) {
+  if (geometry_set.has_pointcloud()) {
     if (domain == ATTR_DOMAIN_POINT) {
       separate_point_cloud_selection(geometry_set, selection_field, invert);
       some_valid_domain = true;
     }
   }
-  if (geometry_set.has<MeshComponent>()) {
+  if (geometry_set.has_mesh()) {
     if (domain != ATTR_DOMAIN_CURVE) {
       separate_mesh_selection(geometry_set, selection_field, domain, mode, invert);
       some_valid_domain = true;
     }
   }
-  if (geometry_set.has<CurveComponent>()) {
+  if (geometry_set.has_curve()) {
     if (ELEM(domain, ATTR_DOMAIN_POINT, ATTR_DOMAIN_CURVE)) {
       separate_curve_selection(geometry_set, selection_field, domain, invert);
       some_valid_domain = true;



More information about the Bf-blender-cvs mailing list