From 81fae56cb9213ca7d64ac97bef7f7447fb96924f Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Mon, 29 Mar 2021 16:56:53 +0200 Subject: [PATCH] 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. --- source/blender/blenkernel/intern/node.cc | 7 +++++++ 1 file changed, 7 insertions(+) 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;