diff --git a/source/blender/nodes/geometry/nodes/node_geo_repeat_input.cc b/source/blender/nodes/geometry/nodes/node_geo_repeat_input.cc index 8a207e6d975..738164c7106 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_repeat_input.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_repeat_input.cc @@ -26,27 +26,24 @@ static void node_declare(NodeDeclarationBuilder &b) const bNode *node = b.node_or_null(); const bNodeTree *tree = b.tree_or_null(); - if (ELEM(nullptr, node, tree)) { - return; - } - - const NodeGeometryRepeatInput &storage = node_storage(*node); - const bNode *output_node = tree->node_by_id(storage.output_node_id); - if (output_node == nullptr) { - return; - } - const auto &output_storage = *static_cast( - output_node->storage); - for (const int i : IndexRange(output_storage.items_num)) { - const NodeRepeatItem &item = output_storage.items[i]; - const eNodeSocketDatatype socket_type = eNodeSocketDatatype(item.socket_type); - const StringRef name = item.name ? item.name : ""; - const std::string identifier = RepeatItemsAccessor::socket_identifier_for_item(item); - auto &input_decl = b.add_input(socket_type, name, identifier); - auto &output_decl = b.add_output(socket_type, name, identifier); - if (socket_type_supports_fields(socket_type)) { - input_decl.supports_field(); - output_decl.dependent_field({input_decl.input_index()}); + if (node && tree) { + const NodeGeometryRepeatInput &storage = node_storage(*node); + const bNode *output_node = tree->node_by_id(storage.output_node_id); + if (output_node) { + const auto &output_storage = *static_cast( + output_node->storage); + for (const int i : IndexRange(output_storage.items_num)) { + const NodeRepeatItem &item = output_storage.items[i]; + const eNodeSocketDatatype socket_type = eNodeSocketDatatype(item.socket_type); + const StringRef name = item.name ? item.name : ""; + const std::string identifier = RepeatItemsAccessor::socket_identifier_for_item(item); + auto &input_decl = b.add_input(socket_type, name, identifier); + auto &output_decl = b.add_output(socket_type, name, identifier); + if (socket_type_supports_fields(socket_type)) { + input_decl.supports_field(); + output_decl.dependent_field({input_decl.input_index()}); + } + } } } b.add_input("", "__extend__"); diff --git a/source/blender/nodes/geometry/nodes/node_geo_repeat_output.cc b/source/blender/nodes/geometry/nodes/node_geo_repeat_output.cc index 9cfad3557c9..069e71bcbc7 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_repeat_output.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_repeat_output.cc @@ -27,20 +27,19 @@ NODE_STORAGE_FUNCS(NodeGeometryRepeatOutput); static void node_declare(NodeDeclarationBuilder &b) { const bNode *node = b.node_or_null(); - if (node == nullptr) { - return; - } - const NodeGeometryRepeatOutput &storage = node_storage(*node); - for (const int i : IndexRange(storage.items_num)) { - const NodeRepeatItem &item = storage.items[i]; - const eNodeSocketDatatype socket_type = eNodeSocketDatatype(item.socket_type); - const StringRef name = item.name ? item.name : ""; - const std::string identifier = RepeatItemsAccessor::socket_identifier_for_item(item); - auto &input_decl = b.add_input(socket_type, name, identifier); - auto &output_decl = b.add_output(socket_type, name, identifier); - if (socket_type_supports_fields(socket_type)) { - input_decl.supports_field(); - output_decl.dependent_field({input_decl.input_index()}); + if (node) { + const NodeGeometryRepeatOutput &storage = node_storage(*node); + for (const int i : IndexRange(storage.items_num)) { + const NodeRepeatItem &item = storage.items[i]; + const eNodeSocketDatatype socket_type = eNodeSocketDatatype(item.socket_type); + const StringRef name = item.name ? item.name : ""; + const std::string identifier = RepeatItemsAccessor::socket_identifier_for_item(item); + auto &input_decl = b.add_input(socket_type, name, identifier); + auto &output_decl = b.add_output(socket_type, name, identifier); + if (socket_type_supports_fields(socket_type)) { + input_decl.supports_field(); + output_decl.dependent_field({input_decl.input_index()}); + } } } b.add_input("", "__extend__");