From be1df80c1b95dbbf2facfaa963b87e0d0a03c213 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Mon, 18 May 2020 19:08:23 -0700 Subject: [PATCH] wasi test: update explanation of safety --- crates/wiggle/tests/wasi.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/wiggle/tests/wasi.rs b/crates/wiggle/tests/wasi.rs index 6e04428627..823d5f84da 100644 --- a/crates/wiggle/tests/wasi.rs +++ b/crates/wiggle/tests/wasi.rs @@ -142,17 +142,16 @@ impl<'a> crate::wasi_snapshot_preview1::WasiSnapshotPreview1 for WasiCtx<'a> { // for efficient implementation of this function elsewhere. let mut slices: Vec> = Vec::new(); - // XXX FIXME make sure this property still holds: - // Mark the iov elements as borrowed, to ensure that they does not - // overlap with any of the as_raw regions. - // bc.borrow_slice(&iovs).expect("borrow iovec array"); for iov_ptr in iovs.iter() { let iov_ptr = iov_ptr.expect("iovec element pointer is valid"); + // Borrow checker will make sure the pointee of this read() doesn't overlap with any + // existing borrows: let iov: types::Iovec = iov_ptr.read().expect("read iovec element"); let base: GuestPtr = iov.buf; let len: u32 = iov.buf_len; let buf: GuestPtr<[u8]> = base.as_array(len); + // GuestSlice will remain borrowed until dropped: let slice = buf.as_slice().expect("borrow slice from iovec"); slices.push(slice); }