Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/stdx/src/process.rs')
-rw-r--r--crates/stdx/src/process.rs18
1 files changed, 8 insertions, 10 deletions
diff --git a/crates/stdx/src/process.rs b/crates/stdx/src/process.rs
index c54d850d7b..75ae064db9 100644
--- a/crates/stdx/src/process.rs
+++ b/crates/stdx/src/process.rs
@@ -212,17 +212,13 @@ mod imp {
impl<'a> Pipe<'a> {
unsafe fn new<P: IntoRawHandle>(p: P, dst: &'a mut Vec<u8>) -> Pipe<'a> {
- Pipe {
- dst,
- pipe: NamedPipe::from_raw_handle(p.into_raw_handle()),
- overlapped: Overlapped::zero(),
- done: false,
- }
+ let pipe = unsafe { NamedPipe::from_raw_handle(p.into_raw_handle()) };
+ Pipe { dst, pipe, overlapped: Overlapped::zero(), done: false }
}
unsafe fn read(&mut self) -> io::Result<()> {
- let dst = slice_to_end(self.dst);
- match self.pipe.read_overlapped(dst, self.overlapped.raw()) {
+ let dst = unsafe { slice_to_end(self.dst) };
+ match unsafe { self.pipe.read_overlapped(dst, self.overlapped.raw()) } {
Ok(_) => Ok(()),
Err(e) => {
if e.raw_os_error() == Some(ERROR_BROKEN_PIPE as i32) {
@@ -237,7 +233,7 @@ mod imp {
unsafe fn complete(&mut self, status: &CompletionStatus) {
let prev = self.dst.len();
- self.dst.set_len(prev + status.bytes_transferred() as usize);
+ unsafe { self.dst.set_len(prev + status.bytes_transferred() as usize) };
if status.bytes_transferred() == 0 {
self.done = true;
}
@@ -251,7 +247,9 @@ mod imp {
if v.capacity() == v.len() {
v.reserve(1);
}
- slice::from_raw_parts_mut(v.as_mut_ptr().add(v.len()), v.capacity() - v.len())
+ let data = unsafe { v.as_mut_ptr().add(v.len()) };
+ let len = v.capacity() - v.len();
+ unsafe { slice::from_raw_parts_mut(data, len) }
}
}