Fix #114216: crash moving "instanced" NLA strips between tracks

Code tried to move such strips (using the same action on equal IDs such
as meshes or shapekeys) between tracks multiple times [even though they
were actually moved already] which could end up with the wrong track
index and things just went downhill from there.

So now skip strips we cannot find in the original track, saves
us from the whole codepatch about "Moving strip into track in the
requested direction".

Pull Request: https://projects.blender.org/blender/blender/pulls/114458
This commit is contained in:
Philipp Oeser 2023-11-03 15:10:32 +01:00 committed by Philipp Oeser
parent 2193bd4b89
commit e7ad3af301

@ -730,7 +730,10 @@ static void recalcData_nla(TransInfo *t)
delta_y2 = (int(tdn->h2[1]) / NLACHANNEL_STEP(snla) - tdn->signed_track_index);
/* Move strip into track in the requested direction. */
if (delta_y1 || delta_y2) {
/* If we cannot find the strip in the track, this strip has moved tracks already (if multiple
* strips using the same action from equal IDs such as meshes or shapekeys are selected) so can
* be skipped. */
if ((delta_y1 || delta_y2) && BLI_findindex(&tdn->nlt->strips, strip) != -1) {
int delta = (delta_y2) ? delta_y2 : delta_y1;
AnimData *anim_data = BKE_animdata_from_id(tdn->id);