Skip to content

Commit 607d297

Browse files
committed
Avoid overflow check in HashMap::reserve's fast path.
1 parent 6a9b5e4 commit 607d297

File tree

1 file changed

+3
-2
lines changed
  • src/libstd/collections/hash

1 file changed

+3
-2
lines changed

src/libstd/collections/hash/map.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -667,8 +667,9 @@ impl<K, V, S> HashMap<K, V, S>
667667
/// ```
668668
#[stable(feature = "rust1", since = "1.0.0")]
669669
pub fn reserve(&mut self, additional: usize) {
670-
let min_cap = self.len().checked_add(additional).expect("reserve overflow");
671-
if self.capacity() < min_cap {
670+
let remaining = self.capacity() - self.len(); // this can't overflow
671+
if remaining < additional {
672+
let min_cap = self.len().checked_add(additional).expect("reserve overflow");
672673
let raw_cap = self.resize_policy.raw_capacity(min_cap);
673674
self.resize(raw_cap);
674675
}

0 commit comments

Comments
 (0)