diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2014-02-21 23:22:51 +1100 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2014-02-24 01:15:39 +1100 |
| commit | 4cc723dc22e5ebcbac4dc431a82ea75bc9ae6017 (patch) | |
| tree | 3e80843e9e8656afe2b13a8aaa984ed2b396d76a | |
| parent | 8b246fda78858e55295ab72bde7ced9af4cbdaf6 (diff) | |
| download | rust-4cc723dc22e5ebcbac4dc431a82ea75bc9ae6017.tar.gz rust-4cc723dc22e5ebcbac4dc431a82ea75bc9ae6017.zip | |
native: be more const correct with the FFI calls.
These calls are mutating their argument and so it's bad behaviour to be pretending that the values are immutable to rustc.
| -rw-r--r-- | src/libnative/io/addrinfo.rs | 12 | ||||
| -rw-r--r-- | src/libnative/io/file.rs | 2 | ||||
| -rw-r--r-- | src/libnative/io/net.rs | 2 |
3 files changed, 8 insertions, 8 deletions
diff --git a/src/libnative/io/addrinfo.rs b/src/libnative/io/addrinfo.rs index 5bdeaa17e74..ff617e5a230 100644 --- a/src/libnative/io/addrinfo.rs +++ b/src/libnative/io/addrinfo.rs @@ -14,7 +14,7 @@ use std::cast; use std::io::IoError; use std::libc; use std::libc::{c_char, c_int}; -use std::ptr::null; +use std::ptr::{null, mut_null}; use super::net::sockaddr_to_addr; @@ -42,13 +42,13 @@ impl GetAddrInfoRequest { }); let hint_ptr = hint.as_ref().map_or(null(), |x| x as *libc::addrinfo); - let res = null(); + let mut res = mut_null(); // Make the call let s = unsafe { let ch = if c_host.is_null() { null() } else { c_host.with_ref(|x| x) }; let cs = if c_serv.is_null() { null() } else { c_serv.with_ref(|x| x) }; - getaddrinfo(ch, cs, hint_ptr, &res) + getaddrinfo(ch, cs, hint_ptr, &mut res) }; // Error? @@ -74,7 +74,7 @@ impl GetAddrInfoRequest { flags: (*rp).ai_flags as uint }); - rp = (*rp).ai_next; + rp = (*rp).ai_next as *mut libc::addrinfo; } } @@ -86,8 +86,8 @@ impl GetAddrInfoRequest { extern "system" { fn getaddrinfo(node: *c_char, service: *c_char, - hints: *libc::addrinfo, res: **libc::addrinfo) -> c_int; - fn freeaddrinfo(res: *libc::addrinfo); + hints: *libc::addrinfo, res: *mut *mut libc::addrinfo) -> c_int; + fn freeaddrinfo(res: *mut libc::addrinfo); #[cfg(not(windows))] fn gai_strerror(errcode: c_int) -> *c_char; #[cfg(windows)] diff --git a/src/libnative/io/file.rs b/src/libnative/io/file.rs index d1d2dba383d..27430ddee97 100644 --- a/src/libnative/io/file.rs +++ b/src/libnative/io/file.rs @@ -91,7 +91,7 @@ impl FileDesc { #[cfg(not(windows))] type rlen = libc::size_t; let ret = retry(|| unsafe { libc::read(self.fd(), - buf.as_ptr() as *mut libc::c_void, + buf.as_mut_ptr() as *mut libc::c_void, buf.len() as rlen) as libc::c_int }); if ret == 0 { diff --git a/src/libnative/io/net.rs b/src/libnative/io/net.rs index d58e4d54342..d71f7544225 100644 --- a/src/libnative/io/net.rs +++ b/src/libnative/io/net.rs @@ -309,7 +309,7 @@ impl rtio::RtioTcpStream for TcpStream { let ret = retry(|| { unsafe { libc::recv(self.fd(), - buf.as_ptr() as *mut libc::c_void, + buf.as_mut_ptr() as *mut libc::c_void, buf.len() as wrlen, 0) as libc::c_int } |
