fix(tweens): TweenBuilder crashes when targets array contains null #7211
+9
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes a crash in
TweenBuilderwhen thetargetsarray containsnullorundefinedelements.Problem
When creating a tween with destroyed game objects or explicitly passing
null/undefinedin the targets array,TweenBuilderthrows:TypeError: Cannot read properties of null (reading 'hasOwnProperty')
at TweenBuilder (src/tweens/builders/TweenBuilder.js:159:58)
This happens because the code directly accesses
targets[targetIndex].hasOwnProperty()without checking if the target exists.Root Cause
This bug was introduced in commit
faec522e1(Aug 19, 2022) when the special-case handling for thescaleshortcut was added.Before (3.55.2 and earlier):
hasOwnPropertycheck on targetsTweenDatabut didn't cause crashesAfter (3.60.0+):
if (key === 'scale' && !targets[targetIndex].hasOwnProperty('scale'))targets[targetIndex]is null/undefinedThe fix adds a null check before the
hasOwnPropertycall, preventing the crash while maintaining the scale shortcut feature.Reproduction
Testing
Tested with the following scenarios:
Impact
Checklist