Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/armature.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index e0b12228162..7b8ed47c513 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -2540,6 +2540,13 @@ void BKE_pose_rebuild(Main *bmain, Object *ob, bArmature *arm, const bool do_id_
for (pchan = pose->chanbase.first; pchan; pchan = pchan->next) {
/* Find the custom B-Bone handles. */
BKE_pchan_rebuild_bbone_handles(pose, pchan);
+ /* Re-validate that we are still using a valid pchan form custom transform. */
+ /* Note that we could store pointers of freed pchan in a GSet to speed this up, however this is
+ * supposed to be a rarely used feature, so for now assuming that always building that GSet
+ * would be less optimal. */
+ if (pchan->custom_tx != NULL && BLI_findindex(&pose->chanbase, pchan->custom_tx) == -1) {
+ pchan->custom_tx = NULL;
+ }
}
/* printf("rebuild pose %s, %d bones\n", ob->id.name, counter); */