From 79f4132ba5f05bc6bad48cfd179d7dc5c1809933 Mon Sep 17 00:00:00 2001 From: Mike Pedersen Date: Mon, 30 Nov 2020 19:19:57 +0100 Subject: [PATCH] Remove extraneous branch from push --- src/lib.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 40ecde4..420c68e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -753,13 +753,15 @@ impl SmallVec { #[inline] pub fn push(&mut self, value: A::Item) { unsafe { - let (_, &mut len, cap) = self.triple_mut(); - if len == cap { + let (mut ptr, mut len, cap) = self.triple_mut(); + if *len == cap { self.reserve(1); + let &mut (heap_ptr, ref mut heap_len) = self.data.heap_mut(); + ptr = heap_ptr; + len = heap_len; } - let (ptr, len_ptr, _) = self.triple_mut(); - *len_ptr = len + 1; - ptr::write(ptr.add(len), value); + ptr::write(ptr.add(*len), value); + *len += 1; } }