Fix: From<BytesMut> fo Vec<u8> implementation (#554)

Signed-off-by: Jiahao XU <[email protected]>
This commit is contained in:
Jiahao XU
2022-07-13 08:59:54 +02:00
committed by GitHub
parent 068ed41bc0
commit 10d1f6ec5c
+6 -5
View File
@@ -1550,18 +1550,19 @@ impl From<BytesMut> for Vec<u8> {
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;