-
Notifications
You must be signed in to change notification settings - Fork 60
Description
For the std::io::Write implementation on TTYPort, a *const ptr is cast to *mut:
serial-rs/serial-unix/src/tty.rs
Line 149 in cb28b14
| libc::write(self.fd, buf.as_ptr() as *mut c_void, buf.len() as size_t) |
This is unnecessary, as libc::write takes buf: *const c_void, so buf.as_ptr() as *const c_void would work fine.
For the std::io::Read implementation on TTYPort, similar but worse, as the pointer is mutated:
serial-rs/serial-unix/src/tty.rs
Line 132 in cb28b14
| libc::read(self.fd, buf.as_ptr() as *mut c_void, buf.len() as size_t) |
In this case, the solution is buf.as_mut_ptr() as *mut c_void. The documentation on slice.as_ptr():
The caller must also ensure that the memory the pointer (non-transitively) points to is never written to (except inside an
UnsafeCell) using this pointer or any pointer derived from it. If you need to mutate the contents of the slice, useas_mut_ptr.
I haven't checked any other code, so there may be more.