From 10d1f6ec5c4e878aad9d13140d3479b3ea78ffcf Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Wed, 13 Jul 2022 16:59:54 +1000 Subject: [PATCH] Fix: `From fo Vec` implementation (#554) Signed-off-by: Jiahao XU --- src/bytes_mut.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/bytes_mut.rs b/src/bytes_mut.rs index 65f97b4..25f0ecc 100644 --- a/src/bytes_mut.rs +++ b/src/bytes_mut.rs @@ -1550,18 +1550,19 @@ impl From for Vec { rebuild_vec(bytes.ptr.as_ptr(), bytes.len, bytes.cap, off) } } else if kind == KIND_ARC { - let shared = unsafe { &mut *(bytes.data as *mut Shared) }; - if shared.is_unique() { - let vec = mem::replace(&mut shared.vec, Vec::new()); + let shared = bytes.data as *mut Shared; + + if unsafe { (*shared).is_unique() } { + let vec = mem::replace(unsafe { &mut (*shared).vec }, Vec::new()); unsafe { release_shared(shared) }; vec } else { - return bytes.deref().into(); + return bytes.deref().to_vec(); } } else { - return bytes.deref().into(); + return bytes.deref().to_vec(); }; let len = bytes.len;