swf: Simplify `read_str_with_len`
Read the length in the function itself rather than receiving it as an argument.
This commit is contained in:
parent
1230b5e713
commit
6d2005c2fe
|
@ -107,8 +107,9 @@ pub trait ReadSwfExt<'a> {
|
|||
}
|
||||
|
||||
#[inline]
|
||||
fn read_str_with_len(&mut self, len: usize) -> Result<&'a SwfStr> {
|
||||
let bytes = &self.read_slice(len)?;
|
||||
fn read_str_with_len(&mut self) -> Result<&'a SwfStr> {
|
||||
let len = self.read_u8()?;
|
||||
let bytes = &self.read_slice(len.into())?;
|
||||
// TODO: Maybe just strip the possible trailing null char instead of looping here.
|
||||
Ok(SwfStr::from_bytes_null_terminated(bytes).unwrap_or_else(|| SwfStr::from_bytes(bytes)))
|
||||
}
|
||||
|
|
|
@ -995,10 +995,9 @@ impl<'a> Reader<'a> {
|
|||
let id = self.read_character_id()?;
|
||||
let flags = FontFlag::from_bits_truncate(self.read_u8()?);
|
||||
let language = self.read_language()?;
|
||||
let name_len = self.read_u8()?;
|
||||
// SWF19 states that the font name should not have a terminating null byte,
|
||||
// but it often does (depends on Flash IDE version?)
|
||||
let name = self.read_str_with_len(name_len.into())?;
|
||||
let name = self.read_str_with_len()?;
|
||||
|
||||
let num_glyphs = self.read_u16()? as usize;
|
||||
let mut glyphs = vec![
|
||||
|
@ -1212,10 +1211,7 @@ impl<'a> Reader<'a> {
|
|||
|
||||
fn read_define_font_info(&mut self, version: u8) -> Result<Tag<'a>> {
|
||||
let id = self.read_u16()?;
|
||||
|
||||
let font_name_len = self.read_u8()?;
|
||||
let font_name = self.read_str_with_len(font_name_len.into())?;
|
||||
|
||||
let font_name = self.read_str_with_len()?;
|
||||
let flags = self.read_u8()?;
|
||||
let use_wide_codes = flags & 0b1 != 0; // TODO(Herschel): Warn if false for version 2.
|
||||
|
||||
|
|
Loading…
Reference in New Issue