[5.3] IRGen: Correctly compute the offset for a non-fixed field after… #31924
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.
… an empty field
Introduce getByteOffsetDuringLayout() so that we can treat empty fields
just like other fixed sized field while performing layout.
Explanation: We used to incorrectly compute the offset of a non-fixed
field after an empty field inside of a closure capture context. This lead to
crashes at runtime because we read memory that the wrong offset.
Scope: Causes Swift programs that caputre empty fields and non-fixed
fields to crash or misbehave.
Risk: Medium, we now correctly compute the offset in such cases.
Testing: Regression test added.
Reviewer: Slava Pestov
rdar://62349871