X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibstd%2Fffi%2Fc_str.rs;h=3a1853a7a6c623146d4f857dbb78ee55cf60a6c2;hb=4d6dc7f9ba9fe61e38d737b29bfe490e835f6921;hp=23daa87401a45641b712ee916dde9d945d881b2e;hpb=2d3e8379c8314ac523197997dd573cfcbaa0a631;p=rust.git diff --git a/src/libstd/ffi/c_str.rs b/src/libstd/ffi/c_str.rs index 23daa87401a..3a1853a7a6c 100644 --- a/src/libstd/ffi/c_str.rs +++ b/src/libstd/ffi/c_str.rs @@ -119,7 +119,7 @@ pub struct CString { /// Converting a foreign C string into a Rust `String` /// /// ```no_run -/// # #![feature(libc,cstr_to_str)] +/// # #![feature(libc)] /// extern crate libc; /// use std::ffi::CStr; /// @@ -205,11 +205,11 @@ pub unsafe fn from_vec_unchecked(mut v: Vec) -> CString { /// The only appropriate argument is a pointer obtained by calling /// `into_ptr`. The length of the string will be recalculated /// using the pointer. - #[unstable(feature = "cstr_memory", reason = "recently added", + #[unstable(feature = "cstr_memory2", reason = "recently added", issue = "27769")] #[deprecated(since = "1.4.0", reason = "renamed to from_raw")] pub unsafe fn from_ptr(ptr: *const libc::c_char) -> CString { - CString::from_raw(ptr) + CString::from_raw(ptr as *mut _) } /// Retakes ownership of a CString that was transferred to C. @@ -217,9 +217,8 @@ pub unsafe fn from_ptr(ptr: *const libc::c_char) -> CString { /// The only appropriate argument is a pointer obtained by calling /// `into_raw`. The length of the string will be recalculated /// using the pointer. - #[unstable(feature = "cstr_memory", reason = "recently added", - issue = "27769")] - pub unsafe fn from_raw(ptr: *const libc::c_char) -> CString { + #[stable(feature = "cstr_memory", since = "1.4.0")] + pub unsafe fn from_raw(ptr: *mut libc::c_char) -> CString { let len = libc::strlen(ptr) + 1; // Including the NUL byte let slice = slice::from_raw_parts(ptr, len as usize); CString { inner: mem::transmute(slice) } @@ -233,11 +232,11 @@ pub unsafe fn from_raw(ptr: *const libc::c_char) -> CString { /// this string. /// /// Failure to call `from_raw` will lead to a memory leak. - #[unstable(feature = "cstr_memory", reason = "recently added", + #[unstable(feature = "cstr_memory2", reason = "recently added", issue = "27769")] #[deprecated(since = "1.4.0", reason = "renamed to into_raw")] pub fn into_ptr(self) -> *const libc::c_char { - self.into_raw() + self.into_raw() as *const _ } /// Transfers ownership of the string to a C caller. @@ -248,13 +247,9 @@ pub fn into_ptr(self) -> *const libc::c_char { /// this string. /// /// Failure to call `from_ptr` will lead to a memory leak. - #[unstable(feature = "cstr_memory", reason = "recently added", - issue = "27769")] - pub fn into_raw(self) -> *const libc::c_char { - // It is important that the bytes be sized to fit - we need - // the capacity to be determinable from the string length, and - // shrinking to fit is the only way to be sure. - Box::into_raw(self.inner) as *const libc::c_char + #[stable(feature = "cstr_memory", since = "1.4.0")] + pub fn into_raw(self) -> *mut libc::c_char { + Box::into_raw(self.inner) as *mut libc::c_char } /// Returns the contents of this `CString` as a slice of bytes. @@ -432,8 +427,7 @@ pub fn to_bytes_with_nul(&self) -> &[u8] { /// > after a 0-cost cast, but it is planned to alter its definition in the /// > future to perform the length calculation in addition to the UTF-8 /// > check whenever this method is called. - #[unstable(feature = "cstr_to_str", reason = "recently added", - issue = "27764")] + #[stable(feature = "cstr_to_str", since = "1.4.0")] pub fn to_str(&self) -> Result<&str, str::Utf8Error> { // NB: When CStr is changed to perform the length check in .to_bytes() // instead of in from_ptr(), it may be worth considering if this should @@ -453,8 +447,7 @@ pub fn to_str(&self) -> Result<&str, str::Utf8Error> { /// > after a 0-cost cast, but it is planned to alter its definition in the /// > future to perform the length calculation in addition to the UTF-8 /// > check whenever this method is called. - #[unstable(feature = "cstr_to_str", reason = "recently added", - issue = "27764")] + #[stable(feature = "cstr_to_str", since = "1.4.0")] pub fn to_string_lossy(&self) -> Cow { String::from_utf8_lossy(self.to_bytes()) }