diff options
| author | bors <bors@rust-lang.org> | 2015-09-09 01:16:54 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-09-09 01:16:54 +0000 |
| commit | 44e657312e5a8084dd40ae9ba6550145f583e793 (patch) | |
| tree | 9e40ae14f581b0bda8b7f97014d407cf5157d690 /src | |
| parent | 24e54aebd09de2a75c1c6ef9763ee05c9d281e71 (diff) | |
| parent | 6bb2c5d32299b4664c3876793b4e759d8fbc0008 (diff) | |
| download | rust-44e657312e5a8084dd40ae9ba6550145f583e793.tar.gz rust-44e657312e5a8084dd40ae9ba6550145f583e793.zip | |
Auto merge of #28198 - alexcrichton:from-raw-mut, r=aturon
Conventionally in C `*mut T` is a transfer of ownership where `*const T` is a loan, so `*mut T` is likely the more appropriate return type for these functions. Additionally, this more closely mirrors the APIs on `Box` for this sort of functionality. cc #27769
Diffstat (limited to 'src')
| -rw-r--r-- | src/libstd/ffi/c_str.rs | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/libstd/ffi/c_str.rs b/src/libstd/ffi/c_str.rs index 23daa87401a..587eb0f1cea 100644 --- a/src/libstd/ffi/c_str.rs +++ b/src/libstd/ffi/c_str.rs @@ -209,7 +209,7 @@ impl CString { 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. @@ -219,7 +219,7 @@ impl CString { /// using the pointer. #[unstable(feature = "cstr_memory", reason = "recently added", issue = "27769")] - pub unsafe fn from_raw(ptr: *const libc::c_char) -> CString { + 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) } @@ -237,7 +237,7 @@ impl CString { 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. @@ -250,11 +250,8 @@ impl CString { /// 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 + 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. |
