mirror of
https://github.com/tokio-rs/bytes.git
synced 2026-08-07 00:00:13 +02:00
Merge 'v1.6.1' into 'master' (#721)
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
# 1.6.1 (July 13, 2024)
|
||||||
|
|
||||||
|
This release fixes a bug where `Bytes::is_unique` returns incorrect values when
|
||||||
|
the `Bytes` originates from a shared `BytesMut`. (#718)
|
||||||
|
|
||||||
# 1.6.0 (March 22, 2024)
|
# 1.6.0 (March 22, 2024)
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ name = "bytes"
|
|||||||
# When releasing to crates.io:
|
# When releasing to crates.io:
|
||||||
# - Update CHANGELOG.md.
|
# - Update CHANGELOG.md.
|
||||||
# - Create "v1.x.y" git tag.
|
# - Create "v1.x.y" git tag.
|
||||||
version = "1.6.0"
|
version = "1.6.1"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
rust-version = "1.39"
|
rust-version = "1.39"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
+7
-1
@@ -1780,7 +1780,7 @@ static SHARED_VTABLE: Vtable = Vtable {
|
|||||||
clone: shared_v_clone,
|
clone: shared_v_clone,
|
||||||
to_vec: shared_v_to_vec,
|
to_vec: shared_v_to_vec,
|
||||||
to_mut: shared_v_to_mut,
|
to_mut: shared_v_to_mut,
|
||||||
is_unique: crate::bytes::shared_is_unique,
|
is_unique: shared_v_is_unique,
|
||||||
drop: shared_v_drop,
|
drop: shared_v_drop,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1843,6 +1843,12 @@ unsafe fn shared_v_to_mut(data: &AtomicPtr<()>, ptr: *const u8, len: usize) -> B
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsafe fn shared_v_is_unique(data: &AtomicPtr<()>) -> bool {
|
||||||
|
let shared = data.load(Ordering::Acquire);
|
||||||
|
let ref_count = (*shared.cast::<Shared>()).ref_count.load(Ordering::Relaxed);
|
||||||
|
ref_count == 1
|
||||||
|
}
|
||||||
|
|
||||||
unsafe fn shared_v_drop(data: &mut AtomicPtr<()>, _ptr: *const u8, _len: usize) {
|
unsafe fn shared_v_drop(data: &mut AtomicPtr<()>, _ptr: *const u8, _len: usize) {
|
||||||
data.with_mut(|shared| {
|
data.with_mut(|shared| {
|
||||||
release_shared(*shared as *mut Shared);
|
release_shared(*shared as *mut Shared);
|
||||||
|
|||||||
@@ -1173,6 +1173,15 @@ fn shared_is_unique() {
|
|||||||
assert!(c.is_unique());
|
assert!(c.is_unique());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn mut_shared_is_unique() {
|
||||||
|
let mut b = BytesMut::from(LONG);
|
||||||
|
let c = b.split().freeze();
|
||||||
|
assert!(!c.is_unique());
|
||||||
|
drop(b);
|
||||||
|
assert!(c.is_unique());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_bytesmut_from_bytes_static() {
|
fn test_bytesmut_from_bytes_static() {
|
||||||
let bs = b"1b23exfcz3r";
|
let bs = b"1b23exfcz3r";
|
||||||
|
|||||||
Reference in New Issue
Block a user