aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jiahao XU <Jiahao_XU@outlook.com> 2022-07-13 16:59:54 +1000
committerGravatar GitHub <noreply@github.com> 2022-07-13 08:59:54 +0200
commit10d1f6ec5c4e878aad9d13140d3479b3ea78ffcf (patch)
tree9f51d052d1af25fcf47b9fec93e56fc1bdc68264 /src
parent068ed41bc02c21fe0a0a4d8e95af8a4668276f5d (diff)
downloadbytes-10d1f6ec5c4e878aad9d13140d3479b3ea78ffcf.tar.gz
bytes-10d1f6ec5c4e878aad9d13140d3479b3ea78ffcf.tar.zst
bytes-10d1f6ec5c4e878aad9d13140d3479b3ea78ffcf.zip
Fix: `From<BytesMut> fo Vec<u8>` implementation (#554)
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
Diffstat (limited to 'src')
-rw-r--r--src/bytes_mut.rs11
1 files 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<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;