fix(phoenix-objects): guard against undefined track.pos #796
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
I identified a critical crash in the
PhoenixObjectsloader that occurs when processing malformed or incomplete track data.When the application loads event data, it validates tracks by checking the number of positions they contain. However, if a track is missing both its explicit position data and the parameters needed to extrapolate those positions, the position array remains undefined.
Currently, the code tries to read the length of this undefined array immediately. This triggers a "Cannot read properties of undefined" error, which causes the entire event display to crash (resulting in a black screen or frozen interface). This issue is particularly common when working with imperfect data sources, such as incomplete JIVEXML files, failed reconstruction exports, or user-uploaded JSON files.
Fix
I updated the track loading logic to be more defensive. I added a check to verify that the position data actually exists before the code attempts to read its length.
If a track is found to be missing necessary data, the loader now gracefully skips that specific track and logs a warning, rather than allowing the error to propagate and crash the browser.
Impact
Test Plan