diff options
| author | bors <bors@rust-lang.org> | 2015-06-25 06:00:15 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-06-25 06:00:15 +0000 |
| commit | 124d1657cc2e321a66e78e9bc5fd4e966f46da42 (patch) | |
| tree | 374662fc934ffe55e102900f60ae9a6889888dd0 /src | |
| parent | 23958d803e18de20564c198e1d1ec8d030d617ce (diff) | |
| parent | 18e78b91de236fb216575809840de29298c79ce3 (diff) | |
| download | rust-124d1657cc2e321a66e78e9bc5fd4e966f46da42.tar.gz rust-124d1657cc2e321a66e78e9bc5fd4e966f46da42.zip | |
Auto merge of #26563 - sfackler:vec-from-iter-overflow, r=Gankro
Closes #26550
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcollections/vec.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 54528c50f1d..3aac1829a0c 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -1482,7 +1482,7 @@ impl<T> FromIterator<T> for Vec<T> { None => return Vec::new(), Some(element) => { let (lower, _) = iterator.size_hint(); - let mut vector = Vec::with_capacity(1 + lower); + let mut vector = Vec::with_capacity(lower.saturating_add(1)); unsafe { ptr::write(vector.get_unchecked_mut(0), element); vector.set_len(1); @@ -1570,10 +1570,11 @@ impl<T> Vec<T> { let len = self.len(); if len == self.capacity() { let (lower, _) = iterator.size_hint(); - self.reserve(lower + 1); + self.reserve(lower.saturating_add(1)); } unsafe { ptr::write(self.get_unchecked_mut(len), element); + // NB can't overflow since we would have had to alloc the address space self.set_len(len + 1); } } |
