Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Tönne <lukas.toenne@gmail.com>2022-05-01 11:27:22 +0300
committerLukas Tönne <lukas.toenne@gmail.com>2022-05-01 11:27:22 +0300
commitdf0616bcd0c3d2a020a36c573b4df49c9947c949 (patch)
treebb0ce40b3fa6c836518e495e4dcdeda32d30252d /source/blender/blenkernel/intern/node.cc
parent171851a6c87469f27d7f4766fbb62c54c5d05e7d (diff)
Nodes: Fix T90233
- Fix default_value initialization of custom node tree interface: This was crashing when adding a custom interface socket to a tree. The node_socket_set_typeinfo function was called too early, creating a default float socket, which then doesn't match the socket type after changing to the custom type. The node_socket_set_typeinfo only allocates and initializes default_value when it isn't already set. That is because the function is used either when creating new sockets or to initialize typeinfo after loading files. So default_value has to be either null or has to be matching the current type already. - Fix RNA flag for string return value of the valid_socket_type callback: String return values of registerable RNA functions need a PROP_THICK_WRAP flag since they don't have a fixed buffer to write into.
Diffstat (limited to 'source/blender/blenkernel/intern/node.cc')
-rw-r--r--source/blender/blenkernel/intern/node.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc
index d3f61d381f2..200eefb73ec 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -1165,6 +1165,9 @@ static void node_set_typeinfo(const struct bContext *C,
}
}
+/* Warning: default_value must either be null or match the typeinfo at this point.
+ * This function is called both for initializing new sockets and after loading files.
+ */
static void node_socket_set_typeinfo(bNodeTree *ntree,
bNodeSocket *sock,
bNodeSocketType *typeinfo)
@@ -3286,9 +3289,9 @@ static bNodeSocket *make_socket_interface(bNodeTree *ntree,
bNodeSocket *sock = MEM_cnew<bNodeSocket>("socket template");
BLI_strncpy(sock->idname, stype->idname, sizeof(sock->idname));
- node_socket_set_typeinfo(ntree, sock, stype);
sock->in_out = in_out;
sock->type = SOCK_CUSTOM; /* int type undefined by default */
+ node_socket_set_typeinfo(ntree, sock, stype);
/* assign new unique index */
const int own_index = ntree->cur_index++;