Add null_terminated
parameter to String.new(Bytes)
and .from_utf16
#15887
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.
It is common to find C strings in
StaticArray
s orSlice
s that are null-terminated, but may also take up the entire slice if its size is equal to the slice's size. In this caseString.new(UInt8*)
is unsafe, whereasString.new(Bytes)
followed byrstrip('\0')
is not very efficient. This PR allows theBytes
constructor to stop as soon as it encounters a null character.LibC::SockaddrUn#sun_path
is not necessarily null-terminated in practice, according to https://man7.org/linux/man-pages/man7/unix.7.html.LibC::Dirent#d_name
is always null-terminated (in fact, it is declared as a variable-length array on Solaris).There are probably more places where this is applicable to Win32 code than the ones included here.