diff options
| author | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2016-09-07 17:21:10 +0200 |
|---|---|---|
| committer | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2016-09-07 17:21:10 +0200 |
| commit | 3f0462acbbabc7703dffdd2771d6cca56eb5545b (patch) | |
| tree | 6a57107cdb69e68da9f949e40de8cd64203dfb71 /src/libstd/sys/unix/net.rs | |
| parent | 2819eca69cc053afaf975f4702abbde83c6b7cdc (diff) | |
| download | rust-3f0462acbbabc7703dffdd2771d6cca56eb5545b.tar.gz rust-3f0462acbbabc7703dffdd2771d6cca56eb5545b.zip | |
Fix argument to FIONBIO ioctl
The FIONBIO ioctl takes as argument a pointer to an integer, which should be either 0 or 1 to indicate whether nonblocking mode is to be switched off or on. The type of the pointed-to variable is "int". However, the set_nonblocking routine in libstd/sys/unix/net.rs passes a pointer to a libc::c_ulong variable. This doesn't matter on all 32-bit platforms and on all litte-endian platforms, but it will break on big-endian 64-bit platforms. Found while porting Rust to s390x (a big-endian 64-bit platform). Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
Diffstat (limited to 'src/libstd/sys/unix/net.rs')
| -rw-r--r-- | src/libstd/sys/unix/net.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libstd/sys/unix/net.rs b/src/libstd/sys/unix/net.rs index 3f77abd7f44..f124ea651ec 100644 --- a/src/libstd/sys/unix/net.rs +++ b/src/libstd/sys/unix/net.rs @@ -213,7 +213,7 @@ impl Socket { } pub fn set_nonblocking(&self, nonblocking: bool) -> io::Result<()> { - let mut nonblocking = nonblocking as libc::c_ulong; + let mut nonblocking = nonblocking as libc::c_int; cvt(unsafe { libc::ioctl(*self.as_inner(), libc::FIONBIO, &mut nonblocking) }).map(|_| ()) } |
