From c8e775180b3d3ad540b6d5f88e92162b7c93f098 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 19 Aug 2019 16:46:31 +0200 Subject: Fix crash when loading a file with existing proxy, and lib has been edited. Editing a lib char should never, ever be done once you have proxies of it in your project, that will most certainly break a lot of things... But at leats let's try no to crash here. --- source/blender/blenkernel/intern/armature_update.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/intern/armature_update.c b/source/blender/blenkernel/intern/armature_update.c index cd1cdce91e0..00975976130 100644 --- a/source/blender/blenkernel/intern/armature_update.c +++ b/source/blender/blenkernel/intern/armature_update.c @@ -887,6 +887,7 @@ void BKE_pose_eval_proxy_copy_bone(struct Depsgraph *depsgraph, Object *object, } BLI_assert(ID_IS_LINKED(object) && object->proxy_from != NULL); bPoseChannel *pchan = pose_pchan_get_indexed(object, pchan_index); + BLI_assert(pchan != NULL); DEG_debug_print_eval_subdata( depsgraph, __func__, object->id.name, object, "pchan", pchan->name, pchan); /* TODO(sergey): Use indexed lookup, once it's guaranteed to be kept @@ -897,8 +898,13 @@ void BKE_pose_eval_proxy_copy_bone(struct Depsgraph *depsgraph, Object *object, #else bPoseChannel *pchan_from = BKE_pose_channel_find_name(object->proxy_from->pose, pchan->name); #endif - BLI_assert(pchan != NULL); - BLI_assert(pchan_from != NULL); + if (pchan_from == NULL) { + printf( + "WARNING: Could not find bone %s in linked ID anymore... " + "You should delete and re-generate your proxy.\n", + pchan->name); + return; + } BKE_pose_copyesult_pchan_result(pchan, pchan_from); copy_dq_dq(&pchan->runtime.deform_dual_quat, &pchan_from->runtime.deform_dual_quat); BKE_pchan_bbone_segments_cache_copy(pchan, pchan_from); -- cgit v1.2.3