[Bf-blender-cvs] [07a9d39f570] master: Fix: unconnected multi socket input crashes
Jacques Lucke
noreply at git.blender.org
Tue Mar 9 09:45:29 CET 2021
Commit: 07a9d39f57093c886fe64b02006cae26193eb8aa
Author: Jacques Lucke
Date: Tue Mar 9 09:45:18 2021 +0100
Branches: master
https://developer.blender.org/rB07a9d39f57093c886fe64b02006cae26193eb8aa
Fix: unconnected multi socket input crashes
The crash would only happen when the output of the Join Geometry node is used.
===================================================================
M source/blender/modifiers/intern/MOD_nodes.cc
M source/blender/nodes/NOD_geometry_exec.hh
===================================================================
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index c0c7897413b..34730292133 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -424,6 +424,10 @@ class GeometryNodesEvaluator {
if (socket_ref->bsocket()->type != SOCK_GEOMETRY) {
continue;
}
+ if (socket_ref->is_multi_input_socket()) {
+ /* Not needed currently. */
+ continue;
+ }
bNodeTree *btree_cow = node->btree();
bNodeTree *btree_original = (bNodeTree *)DEG_get_original_id((ID *)btree_cow);
diff --git a/source/blender/nodes/NOD_geometry_exec.hh b/source/blender/nodes/NOD_geometry_exec.hh
index 1772f92c4b6..5b123e68fe2 100644
--- a/source/blender/nodes/NOD_geometry_exec.hh
+++ b/source/blender/nodes/NOD_geometry_exec.hh
@@ -120,13 +120,17 @@ class GeoNodeExecParams {
template<typename T> Vector<T> extract_multi_input(StringRef identifier)
{
Vector<T> values;
- values.append(input_values_.extract<T>(identifier));
- int i = 1;
- std::string sub_identifier = identifier + "[1]";
- while (input_values_.contains(sub_identifier)) {
+ int index = 0;
+ while (true) {
+ std::string sub_identifier = identifier;
+ if (index > 0) {
+ sub_identifier += "[" + std::to_string(index) + "]";
+ }
+ if (!input_values_.contains(sub_identifier)) {
+ break;
+ }
values.append(input_values_.extract<T>(sub_identifier));
- i++;
- sub_identifier = identifier + "[" + std::to_string(i) + "]";
+ index++;
}
return values;
}
More information about the Bf-blender-cvs
mailing list