Fix silent overflows when calling array functions #74676
+122
−70
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 arguments to Array functions being silently truncated to 32-bit length potentially causing unexpected results.
In the slice functions the arguments are clamped instead of causing an error, because that is the behavior of the called method for these arguments.
IMO the only case that is likely to be hit is with the
resize
method, e.g.[].resize((1<<32) + 5)
which currently returnsOK
, but only allocating a 5 element array instead of a 100GB big one, likely causing all kinds of followup issues.Before: (everything appears to work, the array just wasn't resized as expected)
After: (An error is printed, an error code returned, and the array is not changed)