From a28d16a7518eab8411eed2dd1de5c248a2a3e52c Mon Sep 17 00:00:00 2001 From: Akos Kiss Date: Fri, 12 Dec 2014 22:41:14 +0000 Subject: [PATCH] libc::c_char is not necessarily i8 --- src/librustc_trans/back/lto.rs | 2 +- src/librustrt/c_str.rs | 2 +- src/libstd/os.rs | 2 +- src/test/run-pass/variadic-ffi.rs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/librustc_trans/back/lto.rs b/src/librustc_trans/back/lto.rs index a715849ddf6..1980e1a3ff0 100644 --- a/src/librustc_trans/back/lto.rs +++ b/src/librustc_trans/back/lto.rs @@ -144,7 +144,7 @@ pub fn run(sess: &session::Session, llmod: ModuleRef, // Internalize everything but the reachable symbols of the current module let cstrs: Vec<::std::c_str::CString> = reachable.iter().map(|s| s.to_c_str()).collect(); - let arr: Vec<*const i8> = cstrs.iter().map(|c| c.as_ptr()).collect(); + let arr: Vec<*const libc::c_char> = cstrs.iter().map(|c| c.as_ptr()).collect(); let ptr = arr.as_ptr(); unsafe { llvm::LLVMRustRunRestrictionPass(llmod, diff --git a/src/librustrt/c_str.rs b/src/librustrt/c_str.rs index 07094f08c5d..6d6ea5f6c54 100644 --- a/src/librustrt/c_str.rs +++ b/src/librustrt/c_str.rs @@ -578,7 +578,7 @@ mod tests { assert_eq!(*buf.offset(0), 'f' as libc::c_char); assert_eq!(*buf.offset(1), 'o' as libc::c_char); assert_eq!(*buf.offset(2), 'o' as libc::c_char); - assert_eq!(*buf.offset(3), 0xffu8 as i8); + assert_eq!(*buf.offset(3), 0xffu8 as libc::c_char); assert_eq!(*buf.offset(4), 0); } } diff --git a/src/libstd/os.rs b/src/libstd/os.rs index 138296cca70..871ef5d6fd5 100644 --- a/src/libstd/os.rs +++ b/src/libstd/os.rs @@ -374,7 +374,7 @@ pub fn getenv_as_bytes(n: &str) -> Option> { if s.is_null() { None } else { - Some(CString::new(s as *const i8, false).as_bytes_no_nul().to_vec()) + Some(CString::new(s as *const libc::c_char, false).as_bytes_no_nul().to_vec()) } }) } diff --git a/src/test/run-pass/variadic-ffi.rs b/src/test/run-pass/variadic-ffi.rs index 570b881650a..aa71de2123c 100644 --- a/src/test/run-pass/variadic-ffi.rs +++ b/src/test/run-pass/variadic-ffi.rs @@ -19,7 +19,7 @@ extern { } unsafe fn check(expected: &str, f: |*mut c_char| -> T) { - let mut x = [0i8, ..50]; + let mut x = [0 as c_char, ..50]; f(&mut x[0] as *mut c_char); let res = CString::new(&x[0], false); assert_eq!(expected, res.as_str().unwrap());