mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-07-11 03:37:24 +00:00
Revert Buf::as_str safety change from PR 2319
This commit is contained in:
@@ -7,13 +7,13 @@ pub(super) struct Buf<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Buf<'a> {
|
impl<'a> Buf<'a> {
|
||||||
pub(super) fn new(bytes: &'a mut [u8]) -> Self {
|
pub fn new(bytes: &'a mut [u8]) -> Self {
|
||||||
Buf { bytes, offset: 0 }
|
Buf { bytes, offset: 0 }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) unsafe fn as_str(&self) -> &str {
|
pub fn as_str(&self) -> &str {
|
||||||
let slice = &self.bytes[..self.offset];
|
let slice = &self.bytes[..self.offset];
|
||||||
str::from_utf8_unchecked(slice)
|
unsafe { str::from_utf8_unchecked(slice) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-10
@@ -1376,11 +1376,7 @@ pub trait Visitor<'de>: Sized {
|
|||||||
let mut buf = [0u8; 58];
|
let mut buf = [0u8; 58];
|
||||||
let mut writer = format::Buf::new(&mut buf);
|
let mut writer = format::Buf::new(&mut buf);
|
||||||
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as i128", v)).unwrap();
|
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as i128", v)).unwrap();
|
||||||
|
Err(Error::invalid_type(Unexpected::Other(writer.as_str()), &self))
|
||||||
// Safety: This is safe because we only wrote UTF-8 into the buffer.
|
|
||||||
let s = unsafe { writer.as_str() };
|
|
||||||
|
|
||||||
Err(Error::invalid_type(Unexpected::Other(s), &self))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1442,11 +1438,7 @@ pub trait Visitor<'de>: Sized {
|
|||||||
let mut buf = [0u8; 57];
|
let mut buf = [0u8; 57];
|
||||||
let mut writer = format::Buf::new(&mut buf);
|
let mut writer = format::Buf::new(&mut buf);
|
||||||
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as u128", v)).unwrap();
|
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as u128", v)).unwrap();
|
||||||
|
Err(Error::invalid_type(Unexpected::Other(writer.as_str()), &self))
|
||||||
// Safety: This is safe because we only wrote UTF-8 into the buffer.
|
|
||||||
let s = unsafe { writer.as_str() };
|
|
||||||
|
|
||||||
Err(Error::invalid_type(Unexpected::Other(s), &self))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user