Fix missing overflow check when constructing suballocators #2322
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 an oversight in #2316, where a safety precondition no longer holds. Previously all allocations were bounded by the root allocation which couldn't exceed
DeviceLayout::MAX_SIZE
, but now that regions are separate from allocations, it has to be checked separately somehow. I added aRegion
type solely for the sake of documentation, but I still don't know if it's best like this, where the suballocator would panic on construction (which results in a bit of duplication and could be more error-prone for an implementor of the trait) or whetherRegion
should have private fields much likeDeviceLayout
and have both a safe and unsafe way to construct it. The thing is though that creating a suballocator isn't on the hot path unlike creating aDeviceLayout
.