[Bf-blender-cvs] [5a6534a] master: Fix forward-compat Nodes write code being executed also for undo steps writing.

Bastien Montagne noreply at git.blender.org
Fri Nov 18 22:44:22 CET 2016


Commit: 5a6534a5bb62492af2bae8cff0880c3da19ac4d6
Author: Bastien Montagne
Date:   Fri Nov 18 22:41:56 2016 +0100
Branches: master
https://developer.blender.org/rB5a6534a5bb62492af2bae8cff0880c3da19ac4d6

Fix forward-compat Nodes write code being executed also for undo steps writing.

Forward compatibility code should never, ever be run during undo saving.

Note: related to T49991 (but does not fix it either, crash now happens
when doing a real file save...).

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

M	source/blender/blenloader/intern/writefile.c

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

diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index d104fc8..ad1999c 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -914,20 +914,22 @@ static void write_curvemapping(WriteData *wd, CurveMapping *cumap)
 static void write_node_socket(WriteData *wd, bNodeTree *UNUSED(ntree), bNode *node, bNodeSocket *sock)
 {
 #ifdef USE_NODE_COMPAT_CUSTOMNODES
-	/* forward compatibility code, so older blenders still open */
-	sock->stack_type = 1;
-
-	if (node->type == NODE_GROUP) {
-		bNodeTree *ngroup = (bNodeTree *)node->id;
-		if (ngroup) {
-			/* for node groups: look up the deprecated groupsock pointer */
-			sock->groupsock = ntreeFindSocketInterface(ngroup, sock->in_out, sock->identifier);
-			BLI_assert(sock->groupsock != NULL);
-
-			/* node group sockets now use the generic identifier string to verify group nodes,
-			 * old blender uses the own_index.
-			 */
-			sock->own_index = sock->groupsock->own_index;
+	/* forward compatibility code, so older blenders still open (not for undo) */
+	if (wd->current == NULL) {
+		sock->stack_type = 1;
+
+		if (node->type == NODE_GROUP) {
+			bNodeTree *ngroup = (bNodeTree *)node->id;
+			if (ngroup) {
+				/* for node groups: look up the deprecated groupsock pointer */
+				sock->groupsock = ntreeFindSocketInterface(ngroup, sock->in_out, sock->identifier);
+				BLI_assert(sock->groupsock != NULL);
+
+				/* node group sockets now use the generic identifier string to verify group nodes,
+				 * old blender uses the own_index.
+				 */
+				sock->own_index = sock->groupsock->own_index;
+			}
 		}
 	}
 #endif




More information about the Bf-blender-cvs mailing list