[Bf-blender-cvs] [b7464ec6a2b] datablock_idprops: Fix another case of bad logic in recurrent function handling IDProps.

Bastien Montagne noreply at git.blender.org
Fri Mar 31 10:45:14 CEST 2017


Commit: b7464ec6a2b65fcf65f7869f27ee1130a6d0072c
Author: Bastien Montagne
Date:   Thu Mar 30 21:18:04 2017 +0200
Branches: datablock_idprops
https://developer.blender.org/rBb7464ec6a2b65fcf65f7869f27ee1130a6d0072c

Fix another case of bad logic in recurrent function handling IDProps.

And some generic cleanup/styling/etc.

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

M	source/blender/blenkernel/intern/library_query.c

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

diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c
index 25a32d0a9b4..6f120fece5a 100644
--- a/source/blender/blenkernel/intern/library_query.c
+++ b/source/blender/blenkernel/intern/library_query.c
@@ -293,38 +293,35 @@ static void library_foreach_ID_as_subdata_link(
 
 static void library_foreach_idproperty_ID_link(LibraryForeachIDData *data, IDProperty *prop, int flag)
 {
-	IDProperty *loop;
-	IDProperty *idp_loop;
+	if (!prop)
+		return;
 
-	if (!prop) return;
-
-	BLI_assert(prop->type == IDP_GROUP);
-
-	loop = prop->data.group.first;
-	while (loop) {
-		switch (loop->type) {
-			case IDP_GROUP:
+	switch (loop->type) {
+		case IDP_GROUP:
+		{
+			for (IDProperty *loop = prop->data.group.first; loop; loop = loop->next) {
 				library_foreach_idproperty_ID_link(data, loop, flag);
-				break;
-			case IDP_IDPARRAY:
-				idp_loop = IDP_Array(loop);
-				for (int i = 0; i < loop->len; i++)
-					library_foreach_idproperty_ID_link(data, &idp_loop[i], flag);
-				break;
-			case IDP_ID:
-				if (IDP_Id(loop)) {
-					if (loop->data.pointer) {
-						FOREACH_CALLBACK_INVOKE_ID(data, loop->data.pointer, flag);
-					}
-				}
-				break;
+			}
+			break;
+		}
+		case IDP_IDPARRAY:
+		{
+			IDProperty *loop = IDP_Array(prop);
+			for (int i = 0; i < prop->len; i++) {
+				library_foreach_idproperty_ID_link(data, &loop[i], flag);
+			}
+			break;
 		}
-		loop = loop->next;
+		case IDP_ID:
+			FOREACH_CALLBACK_INVOKE_ID(data, prop->data.pointer, flag);
+			break;
+		default:
+			break;  /* Nothing to do here with other types of IDProperties... */
 	}
+
 	FOREACH_FINALIZE_VOID;
 }
 
-
 /**
  * Loop over all of the ID's this datablock links to.
  *
@@ -595,10 +592,11 @@ void BKE_library_foreach_ID_link(Main *bmain, ID *id, LibraryIDLinkCallback call
 
 			case ID_AR:
 			{
-				bArmature *arm = (bArmature *) id;
-				Bone *bone;
-				for (bone = arm->bonebase.first; bone; bone=bone->next)
+				bArmature *arm = (bArmature *)id;
+
+				for (Bone *bone = arm->bonebase.first; bone; bone = bone->next) {
 					library_foreach_idproperty_ID_link(&data, bone->prop, IDWALK_CB_USER);
+				}
 				break;
 			}
 
@@ -792,16 +790,20 @@ void BKE_library_foreach_ID_link(Main *bmain, ID *id, LibraryIDLinkCallback call
 					CALLBACK_INVOKE_ID(node->id, IDWALK_CB_USER);
 
 					library_foreach_idproperty_ID_link(&data, node->prop, IDWALK_CB_USER);
-					for (sock = node->inputs.first; sock; sock = sock->next)
+					for (sock = node->inputs.first; sock; sock = sock->next) {
 						library_foreach_idproperty_ID_link(&data, sock->prop, IDWALK_CB_USER);
-					for (sock = node->outputs.first; sock; sock = sock->next)
+					}
+					for (sock = node->outputs.first; sock; sock = sock->next) {
 						library_foreach_idproperty_ID_link(&data, sock->prop, IDWALK_CB_USER);
+					}
 				}
 
-				for (sock = ntree->inputs.first; sock; sock = sock->next)
+				for (sock = ntree->inputs.first; sock; sock = sock->next) {
 					library_foreach_idproperty_ID_link(&data, sock->prop, IDWALK_CB_USER);
-				for (sock = ntree->outputs.first; sock; sock = sock->next)
+				}
+				for (sock = ntree->outputs.first; sock; sock = sock->next) {
 					library_foreach_idproperty_ID_link(&data, sock->prop, IDWALK_CB_USER);
+				}
 				break;
 			}




More information about the Bf-blender-cvs mailing list