inner truncate methods for UEFI platforms

This commit is contained in:
ash 2024-06-23 08:36:23 -06:00
parent 2155c6c477
commit b08cd69684
3 changed files with 13 additions and 3 deletions

View File

@ -557,6 +557,11 @@ pub fn leak<'a>(self) -> &'a mut OsStr {
pub(crate) fn as_mut_vec_for_path_buf(&mut self) -> &mut Vec<u8> {
self.inner.as_mut_vec_for_path_buf()
}
#[inline]
pub(crate) fn truncate(&mut self, len: usize) {
self.inner.truncate(len);
}
}
#[stable(feature = "rust1", since = "1.0.0")]

View File

@ -1305,7 +1305,7 @@ fn _push(&mut self, path: &Path) {
// absolute `path` replaces `self`
if path.is_absolute() || path.prefix().is_some() {
self.as_mut_vec().truncate(0);
self.inner.truncate(0);
// verbatim paths need . and .. removed
} else if comps.prefix_verbatim() && !path.inner.is_empty() {
@ -1350,7 +1350,7 @@ fn _push(&mut self, path: &Path) {
// `path` has a root but no prefix, e.g., `\windows` (Windows only)
} else if path.has_root() {
let prefix_len = self.components().prefix_remaining();
self.as_mut_vec().truncate(prefix_len);
self.inner.truncate(prefix_len);
// `path` is a pure relative path
} else if need_sep {
@ -1383,7 +1383,7 @@ fn _push(&mut self, path: &Path) {
pub fn pop(&mut self) -> bool {
match self.parent().map(|p| p.as_u8_slice().len()) {
Some(len) => {
self.as_mut_vec().truncate(len);
self.inner.truncate(len);
true
}
None => false,

View File

@ -207,6 +207,11 @@ pub fn into_rc(&self) -> Rc<Slice> {
pub(crate) fn as_mut_vec_for_path_buf(&mut self) -> &mut Vec<u8> {
&mut self.inner
}
#[inline]
pub(crate) fn truncate(&mut self, len: usize) {
self.inner.truncate(len);
}
}
impl Slice {