[Bf-blender-cvs] [81fae56cb92] master: Fix T86298: crash when loading "corrupted" geometry node tree

Jacques Lucke noreply at git.blender.org
Mon Mar 29 16:57:15 CEST 2021


Commit: 81fae56cb9213ca7d64ac97bef7f7447fb96924f
Author: Jacques Lucke
Date:   Mon Mar 29 16:56:53 2021 +0200
Branches: master
https://developer.blender.org/rB81fae56cb9213ca7d64ac97bef7f7447fb96924f

Fix T86298: crash when loading "corrupted" geometry node tree

The file was not really corrupted (as in, Blender did everything
correctly while saving). I only did not consider the case when
a .blend file is resaved in an older version before.

===================================================================

M	source/blender/blenkernel/intern/node.cc

===================================================================

diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc
index 08a9628a6e6..315ff40289d 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -778,6 +778,13 @@ static void lib_link_node_socket(BlendLibReader *reader, Library *lib, bNodeSock
 {
   IDP_BlendReadLib(reader, sock->prop);
 
+  /* This can happen for all socket types when a file is saved in an older version of Blender than
+   * it was originally created in (T86298). Some socket types still require a default value. The
+   * default value of those sockets will be created in `ntreeSetTypes`. */
+  if (sock->default_value == nullptr) {
+    return;
+  }
+
   switch ((eNodeSocketDatatype)sock->type) {
     case SOCK_OBJECT: {
       bNodeSocketValueObject *default_value = (bNodeSocketValueObject *)sock->default_value;



More information about the Bf-blender-cvs mailing list