[Bf-blender-cvs] [419b4e0b00c] blender-v2.93-release: Fix T89260: Eevee crashes with custom node sockets.
Jeroen Bakker
noreply at git.blender.org
Tue Nov 23 10:08:16 CET 2021
Commit: 419b4e0b00c6e4191d1fd70925040e0215dd933d
Author: Jeroen Bakker
Date: Mon Nov 15 08:07:11 2021 +0100
Branches: blender-v2.93-release
https://developer.blender.org/rB419b4e0b00c6e4191d1fd70925040e0215dd933d
Fix T89260: Eevee crashes with custom node sockets.
Cause of this issue is that Custom Node Sockets info type was
initialized as SOCK_FLOAT when registering. Areas within the core that
would ignore custom socket types by checking its type would use the
socket as being a float type.
When custom node sockets have a property called default_value blender
tries to store it as an internal default value what failed in debug
builds.
This patch will set the socket type to SOCK_CUSTOM when registering a
custom socket type and allow, but skip storage of custom default values.
In this case the default values should already be stored as custom
properies.
Reviewed By: campbellbarton, JacquesLucke
Maniphest Tasks: T89260
Differential Revision: https://developer.blender.org/D13174
===================================================================
M source/blender/blenkernel/intern/node.cc
M source/blender/makesrna/intern/rna_nodetree.c
===================================================================
diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc
index bb1c3b30880..230f418ba4d 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -434,8 +434,10 @@ static void write_node_socket_default_value(BlendWriter *writer, bNodeSocket *so
case SOCK_COLLECTION:
BLO_write_struct(writer, bNodeSocketValueCollection, sock->default_value);
break;
- case __SOCK_MESH:
case SOCK_CUSTOM:
+ /* Custom node sockets where default_value is defined uses custom properties for storage. */
+ break;
+ case __SOCK_MESH:
case SOCK_SHADER:
case SOCK_GEOMETRY:
BLI_assert_unreachable();
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index b1044c9c673..6da7edb5891 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -2613,6 +2613,7 @@ static StructRNA *rna_NodeSocket_register(Main *UNUSED(bmain),
/* setup dummy socket & socket type to store static properties in */
memset(&dummyst, 0, sizeof(bNodeSocketType));
+ dummyst.type = SOCK_CUSTOM;
memset(&dummysock, 0, sizeof(bNodeSocket));
dummysock.typeinfo = &dummyst;
More information about the Bf-blender-cvs
mailing list