diff --git a/CHANGELOG.md b/CHANGELOG.md index d2db7d2d61..87897f4245 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ This project adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] - ReleaseDate ### Added + +- `sys::uio::IoVec` is not `Send` and `Sync` + (#[1582](https://github.com/nix-rust/nix/pull/1582)) + ### Changed ### Fixed diff --git a/src/sys/uio.rs b/src/sys/uio.rs index 3abcde24fe..89f02cc9d4 100644 --- a/src/sys/uio.rs +++ b/src/sys/uio.rs @@ -221,3 +221,8 @@ impl<'a> IoVec<&'a mut [u8]> { }, PhantomData) } } + +// The only reason IoVec isn't automatically Send+Sync is because libc::iovec +// contains raw pointers. +unsafe impl Send for IoVec where T: Send {} +unsafe impl Sync for IoVec where T: Sync {}