about summary refs log tree commit diff
path: root/src/liballoc/vec_deque.rs
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@gmail.com>2017-09-23 21:19:01 -0700
committerSteven Fackler <sfackler@gmail.com>2017-09-23 21:19:01 -0700
commit9733463d2b141a166bfa2f55ec316066ab0f71b6 (patch)
tree95667fc249765b7f89f7ab7499d933e42ad68bcc /src/liballoc/vec_deque.rs
parent24831c7221c7b4e32a02f8e8cffe7dfacb88b520 (diff)
downloadrust-9733463d2b141a166bfa2f55ec316066ab0f71b6.tar.gz
rust-9733463d2b141a166bfa2f55ec316066ab0f71b6.zip
Fix capacity comparison in reserve
You can otherwise end up in a situation where you don't actually resize
but still call into handle_cap_increase which then corrupts head/tail.

Closes #44800
Diffstat (limited to 'src/liballoc/vec_deque.rs')
-rw-r--r--src/liballoc/vec_deque.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/liballoc/vec_deque.rs b/src/liballoc/vec_deque.rs
index 6836fbb7c4d..6d64e9e303f 100644
--- a/src/liballoc/vec_deque.rs
+++ b/src/liballoc/vec_deque.rs
@@ -558,7 +558,7 @@ impl<T> VecDeque<T> {
             .and_then(|needed_cap| needed_cap.checked_next_power_of_two())
             .expect("capacity overflow");
 
-        if new_cap > self.capacity() {
+        if new_cap > old_cap {
             self.buf.reserve_exact(used_cap, new_cap - used_cap);
             unsafe {
                 self.handle_cap_increase(old_cap);