From 5f59e1c8f9fcd31eae199514abf9d59d09f336c0 Mon Sep 17 00:00:00 2001 From: Michael McConville Date: Thu, 17 Dec 2015 21:04:54 -0500 Subject: [PATCH 1/2] Make runtime function return size_t It returns sizeof(dirent_t), so I'm not sure why its return type is int. It's only used once, and that usage immediately casts it to usize. --- src/libstd/sys/unix/fs.rs | 4 ++-- src/rt/rust_builtin.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libstd/sys/unix/fs.rs b/src/libstd/sys/unix/fs.rs index 8ea8f0c6c771b..4b4310a147720 100644 --- a/src/libstd/sys/unix/fs.rs +++ b/src/libstd/sys/unix/fs.rs @@ -127,11 +127,11 @@ impl Iterator for ReadDir { fn next(&mut self) -> Option> { extern { - fn rust_dirent_t_size() -> c_int; + fn rust_dirent_t_size() -> size_t; } let mut buf: Vec = Vec::with_capacity(unsafe { - rust_dirent_t_size() as usize + rust_dirent_t_size() }); let ptr = buf.as_mut_ptr() as *mut libc::dirent; diff --git a/src/rt/rust_builtin.c b/src/rt/rust_builtin.c index af15bda4c3d4a..c2168d785b995 100644 --- a/src/rt/rust_builtin.c +++ b/src/rt/rust_builtin.c @@ -77,7 +77,7 @@ rust_readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) { return readdir_r(dirp, entry, result); } -int +size_t rust_dirent_t_size() { return sizeof(struct dirent); } From cf03ceed14683419d1b6c9a04141f415b982348f Mon Sep 17 00:00:00 2001 From: Michael McConville Date: Thu, 17 Dec 2015 21:24:14 -0500 Subject: [PATCH 2/2] Add a type prefix to fix build Apparently this file's use annotations have changed since I last pulled on my test machine. --- src/libstd/sys/unix/fs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libstd/sys/unix/fs.rs b/src/libstd/sys/unix/fs.rs index 4b4310a147720..8ff3a892c067c 100644 --- a/src/libstd/sys/unix/fs.rs +++ b/src/libstd/sys/unix/fs.rs @@ -127,7 +127,7 @@ impl Iterator for ReadDir { fn next(&mut self) -> Option> { extern { - fn rust_dirent_t_size() -> size_t; + fn rust_dirent_t_size() -> libc::size_t; } let mut buf: Vec = Vec::with_capacity(unsafe {