-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[stdlib] Avoid materializing strong references in potential dangling unmanaged opaque functions #70945
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
… opaque functions Add test and comments
lorentey
reviewed
Jan 16, 2024
Co-authored-by: Karoy Lorentey <[email protected]>
Co-authored-by: Karoy Lorentey <[email protected]>
lorentey
reviewed
Jan 16, 2024
Co-authored-by: Karoy Lorentey <[email protected]>
@swift-ci please test |
glessard
reviewed
Jan 17, 2024
glessard
reviewed
Jan 17, 2024
glessard
reviewed
Jan 17, 2024
glessard
reviewed
Jan 17, 2024
@swift-ci please test |
glessard
approved these changes
Jan 17, 2024
Co-authored-by: Guillaume Lessard <[email protected]> fix test
14caaab
to
f0a74ec
Compare
@swift-ci please test |
glessard
approved these changes
Jan 17, 2024
Is |
// pointer. This test's expectEqual is kind of bogus, we're just checking that | ||
// it doesn't crash. | ||
|
||
// Create a dangling pointer, usually to unmapped memory. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
usually 😂
That initializer is still used in the functions that go from strong ref -> unmanaged. |
Azoy
added a commit
to Azoy/swift
that referenced
this pull request
Jan 17, 2024
[stdlib] Avoid materializing strong references in potential dangling unmanaged opaque functions
stephentyrone
pushed a commit
that referenced
this pull request
Jan 18, 2024
[stdlib] Avoid materializing strong references in potential dangling unmanaged opaque functions
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The current implementations of
toOpaque
andfromOpaque
accidentally/incorrectly gets hold of temporary strong references toInstance
which will emit retain/releases from the compiler in certain configurations. These functions should not induce any ARC traffic whatsoever. Bit castself
to and from the pointer value instead to avoid this.Resolves: rdar://120849792