From 116cbcbc860e6110c5e7722aeb187df734e1982b Mon Sep 17 00:00:00 2001 From: YimingWu Date: Thu, 8 Jun 2023 04:15:45 +0200 Subject: [PATCH] Fix #108229: Wider tolerance shuffling NLA strips In `transdata_get_time_shuffle_offset_side`, the tolerance for terminating the loop is too tight, sometimes it will lead to a infinite loop due to non-integral start/end values. Now fixed. Pull Request: https://projects.blender.org/blender/blender/pulls/108257 --- source/blender/editors/transform/transform_convert_nla.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/transform/transform_convert_nla.c b/source/blender/editors/transform/transform_convert_nla.c index caafc8f852d..c02d1484cf1 100644 --- a/source/blender/editors/transform/transform_convert_nla.c +++ b/source/blender/editors/transform/transform_convert_nla.c @@ -119,7 +119,9 @@ static float transdata_get_time_shuffle_offset_side(ListBase *trans_datas, const } total_offset += offset; - } while (!IS_EQF(offset, 0.0f)); + } while (!IS_EQT(offset, 0.0f, 1e-4)); + /* Needs a eps greater than FLT_EPS because strip->start/end could be non-integral, and after + * those calculations, `offset` could fall outside of FLT_EPS. */ return total_offset; }