Check fixed-size vector input lengths - #76
Merged
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
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.
StructUtils.make(SVector{2,Int}, [1])currently returns a vector with an uninitialized second slot. The shared fixed-size vector writer also uses@inboundswithout checking excess input.Check each write against the target size, then check the final count before constructing the result. Both short and long input now throw
DimensionMismatch. The checks use the existing single pass, including for iterators without a known length. The separate multidimensional path is unchanged.Validation: the new regressions failed 14 checks against the original implementation with bounds checks forced. All 32 now pass with bounds checks disabled. They cover immutable/mutable vectors, numeric/reference elements, empty input, exact/short/long lengths, unknown-length iterators, and custom style hooks. Full suites passed 649 checks on Julia 1.12.7 (including 7 trim checks) and 643 on Julia 1.9.4. Allocations were unchanged for five valid-input cases. Oversized input on the original code was tested only with forced bounds checks.
Co-authored by Codex