about summary refs log tree commit diff
diff options
context:
space:
mode:
authorklensy <klensy@users.noreply.github.com>2021-03-28 19:55:09 +0300
committerklensy <klensy@users.noreply.github.com>2021-03-29 15:32:25 +0300
commita0ff4612f21e312362a3ffbec0a104b9937d700b (patch)
tree65a518c62e8a1c2355418d37bdf34b5a37151b31
parent84542d22a71cb486b0f79cf3bfd7a264b688030c (diff)
downloadrust-a0ff4612f21e312362a3ffbec0a104b9937d700b.tar.gz
rust-a0ff4612f21e312362a3ffbec0a104b9937d700b.zip
ffi::c_str smaller as_bytes
-rw-r--r--library/std/src/ffi/c_str.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/library/std/src/ffi/c_str.rs b/library/std/src/ffi/c_str.rs
index 687ed61b959..ed4950c57a6 100644
--- a/library/std/src/ffi/c_str.rs
+++ b/library/std/src/ffi/c_str.rs
@@ -613,7 +613,8 @@ impl CString {
     #[inline]
     #[stable(feature = "rust1", since = "1.0.0")]
     pub fn as_bytes(&self) -> &[u8] {
-        &self.inner[..self.inner.len() - 1]
+        // SAFETY: CString has a length at least 1
+        unsafe { self.inner.get_unchecked(..self.inner.len() - 1) }
     }
 
     /// Equivalent to [`CString::as_bytes()`] except that the
@@ -1322,7 +1323,8 @@ impl CStr {
     #[stable(feature = "rust1", since = "1.0.0")]
     pub fn to_bytes(&self) -> &[u8] {
         let bytes = self.to_bytes_with_nul();
-        &bytes[..bytes.len() - 1]
+        // SAFETY: to_bytes_with_nul returns slice with length at least 1
+        unsafe { bytes.get_unchecked(..bytes.len() - 1) }
     }
 
     /// Converts this C string to a byte slice containing the trailing 0 byte.