[Bf-blender-cvs] [229d0ace026] blender-v3.1-release: Fix T95532: Merge node deletes everything for empty selections
Wannes Malfait
noreply at git.blender.org
Mon Feb 7 23:08:46 CET 2022
Commit: 229d0ace026ffb3591fdad4c5a6e0530c1243025
Author: Wannes Malfait
Date: Mon Feb 7 16:08:36 2022 -0600
Branches: blender-v3.1-release
https://developer.blender.org/rB229d0ace026ffb3591fdad4c5a6e0530c1243025
Fix T95532: Merge node deletes everything for empty selections
The problem was that nullptr was returned which is a valid value for
Mesh * and hence the returned optional was treated as having some value.
There was no check for point clouds so that was fixed as well.
Differential Revision: https://developer.blender.org/D14026
===================================================================
M source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc
===================================================================
diff --git a/source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc b/source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc
index 3c790079b5b..89227c773cc 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc
@@ -60,7 +60,7 @@ static std::optional<Mesh *> mesh_merge_by_distance(const MeshComponent &mesh_co
const IndexMask selection = evaluator.get_evaluated_as_mask(0);
if (selection.is_empty()) {
- return nullptr;
+ return std::nullopt;
}
const Mesh &mesh = *mesh_component.get_for_read();
@@ -78,7 +78,9 @@ static void node_geo_exec(GeoNodeExecParams params)
if (geometry_set.has_pointcloud()) {
PointCloud *result = pointcloud_merge_by_distance(
*geometry_set.get_component_for_read<PointCloudComponent>(), merge_distance, selection);
- geometry_set.replace_pointcloud(result);
+ if (result) {
+ geometry_set.replace_pointcloud(result);
+ }
}
if (geometry_set.has_mesh()) {
std::optional<Mesh *> result = mesh_merge_by_distance(
More information about the Bf-blender-cvs
mailing list