diff options
| author | Eric Huss <eric@huss.org> | 2024-02-14 18:40:53 -0800 |
|---|---|---|
| committer | Eric Huss <eric@huss.org> | 2024-02-14 18:40:53 -0800 |
| commit | 217e5e484df9ade9bbca4ffe923792872aca7bd9 (patch) | |
| tree | b2701e086a07c05cfedc85ab71f59962eec12c1b /compiler/rustc_data_structures | |
| parent | ee9c7c940c07d8b67c9a6b2ec930db70dcd23a46 (diff) | |
| download | rust-217e5e484df9ade9bbca4ffe923792872aca7bd9.tar.gz rust-217e5e484df9ade9bbca4ffe923792872aca7bd9.zip | |
Fix SmallCStr conversion from CStr
Diffstat (limited to 'compiler/rustc_data_structures')
| -rw-r--r-- | compiler/rustc_data_structures/src/small_c_str.rs | 2 | ||||
| -rw-r--r-- | compiler/rustc_data_structures/src/small_c_str/tests.rs | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/compiler/rustc_data_structures/src/small_c_str.rs b/compiler/rustc_data_structures/src/small_c_str.rs index 349fd7f9769..809ce3d4483 100644 --- a/compiler/rustc_data_structures/src/small_c_str.rs +++ b/compiler/rustc_data_structures/src/small_c_str.rs @@ -82,6 +82,6 @@ impl<'a> FromIterator<&'a str> for SmallCStr { impl From<&ffi::CStr> for SmallCStr { fn from(s: &ffi::CStr) -> Self { - Self { data: SmallVec::from_slice(s.to_bytes()) } + Self { data: SmallVec::from_slice(s.to_bytes_with_nul()) } } } diff --git a/compiler/rustc_data_structures/src/small_c_str/tests.rs b/compiler/rustc_data_structures/src/small_c_str/tests.rs index 47277604b2b..7b975dadcb7 100644 --- a/compiler/rustc_data_structures/src/small_c_str/tests.rs +++ b/compiler/rustc_data_structures/src/small_c_str/tests.rs @@ -43,3 +43,11 @@ fn long() { fn internal_nul() { let _ = SmallCStr::new("abcd\0def"); } + +#[test] +fn from_cstr() { + let c = c"foo"; + let s: SmallCStr = c.into(); + assert_eq!(s.len_with_nul(), 4); + assert_eq!(s.as_c_str(), c"foo"); +} |
