Special case assume_init for Bool on Windows#655
Open
ChrisDenton wants to merge 1 commit into
Open
Conversation
ChrisDenton
commented
May 25, 2026
| } | ||
| } | ||
|
|
||
| impl<T: Copy> AssumeInit for T {} |
Member
Author
There was a problem hiding this comment.
Note that this fakes specialisation by not implementing Copy for the type (i.e. Bool) we want to special case. This is fine for our usage since we only actually need to move values and Bool is private.
Member
There was a problem hiding this comment.
What other types is this required by? Could we just explicitly implement it for the 3 or 4 other types?
Member
Author
There was a problem hiding this comment.
It would currently need to be implemented for i32, u32, IN_ADDR, linger and WSAPROTOCOL_INFOW. Which seems fine. My only reluctance was that more things could be added in the future.
Member
There was a problem hiding this comment.
I would consider doing that and renaming this to GetsockoptOutput or similar.
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
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.
On Windows many socket options are documented as having the value "
DWORD(boolean)". ADWORDis 4 bytes but when writing a boolean, often only one byte is actually written. While this is mostly consistent, it has been observed that usinggetsockoptwith theIPV6_V6ONLYoption can sometimes write 1 byte but other time write 4 bytes. So this PR allows us to accept either 1 or 4 bytes when the type of the option isBool.Fixes #564