Skip to content

Commit 304cd02

Browse files
authored
Merge pull request #195 from AfoHT/clone_drop_fix
Fix the clone drop issue
2 parents 4499eda + 4ac126e commit 304cd02

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/vec.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -680,10 +680,19 @@ where
680680
N: ArrayLength<T>,
681681
{
682682
fn clone(&self) -> Self {
683-
Self {
684-
vec: self.vec.clone(),
685-
next: self.next,
683+
let mut vec = Vec::new();
684+
685+
if self.next < self.vec.len() {
686+
let s = unsafe {
687+
slice::from_raw_parts(
688+
(self.vec.0.buffer.as_ptr() as *const T).add(self.next),
689+
self.vec.len() - self.next,
690+
)
691+
};
692+
vec.extend_from_slice(s).ok();
686693
}
694+
695+
Self { vec, next: 0 }
687696
}
688697
}
689698

0 commit comments

Comments
 (0)