Skip to content

Commit

Permalink
Avoid overflow in VecDeque::with_capacity_in().
Browse files Browse the repository at this point in the history
  • Loading branch information
hkratz committed Oct 18, 2021
1 parent 5e02151 commit 4a37b9c
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion library/alloc/src/collections/vec_deque/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -543,9 +543,9 @@ impl<T, A: Allocator> VecDeque<T, A> {
/// ```
#[unstable(feature = "allocator_api", issue = "32838")]
pub fn with_capacity_in(capacity: usize, alloc: A) -> VecDeque<T, A> {
assert!(capacity < 1_usize << usize::BITS - 1, "capacity overflow");
// +1 since the ringbuffer always leaves one space empty
let cap = cmp::max(capacity + 1, MINIMUM_CAPACITY + 1).next_power_of_two();
assert!(cap > capacity, "capacity overflow");

VecDeque { tail: 0, head: 0, buf: RawVec::with_capacity_in(cap, alloc) }
}
Expand Down

0 comments on commit 4a37b9c

Please sign in to comment.