wasi test: update explanation of safety

This commit is contained in:
Pat Hickey
2020-05-18 19:08:23 -07:00
parent 478cc68082
commit be1df80c1b

View File

@@ -142,17 +142,16 @@ impl<'a> crate::wasi_snapshot_preview1::WasiSnapshotPreview1 for WasiCtx<'a> {
// for efficient implementation of this function elsewhere. // for efficient implementation of this function elsewhere.
let mut slices: Vec<GuestSlice<'_, u8>> = Vec::new(); let mut slices: Vec<GuestSlice<'_, u8>> = 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() { for iov_ptr in iovs.iter() {
let iov_ptr = iov_ptr.expect("iovec element pointer is valid"); 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 iov: types::Iovec = iov_ptr.read().expect("read iovec element");
let base: GuestPtr<u8> = iov.buf; let base: GuestPtr<u8> = iov.buf;
let len: u32 = iov.buf_len; let len: u32 = iov.buf_len;
let buf: GuestPtr<[u8]> = base.as_array(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"); let slice = buf.as_slice().expect("borrow slice from iovec");
slices.push(slice); slices.push(slice);
} }