From 11d785edea7c96a34c4990b88ab833faa52b581c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 7 Feb 2022 20:51:03 +0100 Subject: [PATCH 1/2] Fix T95502: macOS app has both python 3.9 and 3.10 executables --- source/creator/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 6f23fbe486a..bc4d912405c 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -1104,9 +1104,9 @@ elseif(APPLE) ${TARGETDIR_VER}/python/lib ) - install(DIRECTORY ${LIBDIR}/python/bin - DESTINATION ${TARGETDIR_VER}/python - USE_SOURCE_PERMISSIONS + install( + PROGRAMS ${PYTHON_EXECUTABLE} + DESTINATION ${TARGETDIR_VER}/python/bin ) # Needed for distutils/pip From 229d0ace026ffb3591fdad4c5a6e0530c1243025 Mon Sep 17 00:00:00 2001 From: Wannes Malfait Date: Mon, 7 Feb 2022 16:08:36 -0600 Subject: [PATCH 2/2] 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 --- .../nodes/geometry/nodes/node_geo_merge_by_distance.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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_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(), merge_distance, selection); - geometry_set.replace_pointcloud(result); + if (result) { + geometry_set.replace_pointcloud(result); + } } if (geometry_set.has_mesh()) { std::optional result = mesh_merge_by_distance(