Fix crash when using Safari Translation feature #124
Merged
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.
Summary
This PR is to address an issue where the app would crash (unhandled exception is thrown) in Safari, when the following is true:
LinesEllipsis
with and one without truncated text is first rendered on the screen and then unmountedSteps to reproduce
LinesEllipsis
components on the screen; 1 should truncate the text and one should notbasedOn="letters"
but I think that doesn't really play a roleLinesEllipsis
gets translatedMinimal reproducible example
https://github.com/zigcccc/react-lines-ellipsis-crash-minimal-reproducible-example
Demo
React.Lines.Ellipsis.Safari.Crash.mp4
The problem
this.canvas
to benull
componentWillUnmount
, we're assuming thatthis.canvas
is always definedparentNode
) onnull
, which causes the crashI'm not sure how exactly that happens, and why this is scoped to Safari only (applying translations in Chrome works without any issues). But simply verifying that we have a canvas element to work with before doing any operations on it prevents the app from crashing, which is the goal of this PR.