-
-
Notifications
You must be signed in to change notification settings - Fork 131
Bug fixes for StrV[Ref]
#1778
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
Merged
Bug fixes for StrV[Ref]
#1778
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
The left hand side of the condition `self.len + additional + 1 <= self. capacity` could overflow and wrap around if `additional` was set to a huge value, causing `reserve` to return without reserving a specified capacity.
The left hand side of the condition `self.len + other.len() + 1 <= self. capacity` could overflow and wrap around if `other` contained a large number of elements, causing it to proceed to the copying code without calling `reserve`.
We need to ensure that `self` is null-terminated even if `<S as AsRef< str>>::as_ref` panics.
sdroege
reviewed
Aug 8, 2025
sdroege
reviewed
Aug 8, 2025
sdroege
reviewed
Aug 8, 2025
sdroege
reviewed
Aug 8, 2025
The CI failures are unrelated, you can ignore them :) Once you updated the other parts, I'll merge this and get a bugfix release with that (and the other pending fixes) out. Thanks for fixing these! |
Also check lenghts in various `StrV` tests.
We need to ensure that `self` is null-terminated even if writing the previous items panics.
Fixing those other occurrences now to get a bugfix release out. |
… / `Slice` / `StrV`
sdroege
approved these changes
Aug 9, 2025
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.
Fixes the following bugs:
StrV::reserve
can return without actually reserving ifadditional
is too large (>= usize::MAX - self.len()
) and overflow checking is disabledStrV::extend_from_slice
can incorrectly skipStrV::reserve
before writing elements if it is given a ZST slice containing a large number of elements (>= usize::MAX - self.len()
) and overflow checking is disabledStrV::extend_from_slice
is not panic safe<StrVRef as PartialEq<[&str]>>::eq
incorrectly evaluates tofalse
if two slices have different numbers of elements but their prefixes match