[Bf-blender-cvs] [18be39f] master: Fix some assert when making local (due to infamous PITA ShapeKey ID).

Bastien Montagne noreply at git.blender.org
Wed Nov 9 16:43:24 CET 2016


Commit: 18be39ff17e995ab09bd9eef2b842f66f5270e37
Author: Bastien Montagne
Date:   Wed Nov 9 16:42:28 2016 +0100
Branches: master
https://developer.blender.org/rB18be39ff17e995ab09bd9eef2b842f66f5270e37

Fix some assert when making local (due to infamous PITA ShapeKey ID).

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

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

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

diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c
index 5d23788..14804d0 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -264,9 +264,12 @@ void id_fake_user_clear(ID *id)
 }
 
 static int id_expand_local_callback(
-        void *UNUSED(user_data), struct ID *UNUSED(id_self), struct ID **id_pointer, int UNUSED(cd_flag))
+        void *UNUSED(user_data), struct ID *id_self, struct ID **id_pointer, int UNUSED(cd_flag))
 {
-	if (*id_pointer) {
+	/* Can hapen that we get unlinkable ID here, e.g. with shapekey referring to itself (through drivers)...
+	 * Just skip it, shape key can only be either indirectly linked, or fully local, period.
+	 * And let's curse one more time that stupid useless shapekey ID type! */
+	if (*id_pointer && *id_pointer != id_self && BKE_idcode_is_linkable(GS((*id_pointer)->name))) {
 		id_lib_extern(*id_pointer);
 	}




More information about the Bf-blender-cvs mailing list