diff options
| author | Ralf Jung <post@ralfj.de> | 2024-02-14 19:08:48 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2024-02-14 19:08:48 +0100 |
| commit | 7a086ac8875b45adee3d2cff0f024205eb568d8d (patch) | |
| tree | 138995ac33229aa6af4c1e84d891314800d71afa /compiler/rustc_data_structures | |
| parent | 6539a64d73849176ff327b28a55d7d6787f293ef (diff) | |
| parent | 533e3f0a840cc7d803c508a9732f411ef8682188 (diff) | |
| download | rust-7a086ac8875b45adee3d2cff0f024205eb568d8d.tar.gz rust-7a086ac8875b45adee3d2cff0f024205eb568d8d.zip | |
Merge from rustc
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"); +} |
