Skip to content

Commit

Permalink
Fix: From<BytesMut> fo Vec<u8> implementation (#554)
Browse files Browse the repository at this point in the history
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
  • Loading branch information
NobodyXu authored Jul 13, 2022
1 parent 068ed41 commit 10d1f6e
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions src/bytes_mut.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 10d1f6e

Please sign in to comment.