From 39226cd437c4d68134369740bdab945c4b4d4364 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 29 Apr 2021 19:07:08 +0200 Subject: Fix T87317: Cycles XML parsing broken after bugfix for initialization order --- intern/cycles/graph/node_type.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'intern') diff --git a/intern/cycles/graph/node_type.h b/intern/cycles/graph/node_type.h index 2a741d9b06f..8b37398fa17 100644 --- a/intern/cycles/graph/node_type.h +++ b/intern/cycles/graph/node_type.h @@ -148,16 +148,17 @@ struct NodeType { #define NODE_DECLARE \ static const NodeType *get_node_type(); \ template static const NodeType *register_type(); \ - static Node *create(const NodeType *type); + static Node *create(const NodeType *type); \ + static const NodeType *node_type; #define NODE_DEFINE(structname) \ + const NodeType *structname::node_type = structname::register_type(); \ Node *structname::create(const NodeType *) \ { \ return new structname(); \ } \ const NodeType *structname::get_node_type() \ { \ - static const NodeType *node_type = register_type(); \ return node_type; \ } \ template const NodeType *structname::register_type() @@ -169,6 +170,8 @@ struct NodeType { #define NODE_ABSTRACT_DEFINE(structname) \ const NodeType *structname::get_node_base_type() \ { \ + /* Base types constructed in this getter to ensure correct initialization \ + * order. Regular types are not so they are auto-registered for XML parsing. */ \ static const NodeType *node_base_type = register_base_type(); \ return node_base_type; \ } \ -- cgit v1.2.3