diff --git a/core/src/display_object/movie_clip.rs b/core/src/display_object/movie_clip.rs index 68066c412..df5a13a13 100644 --- a/core/src/display_object/movie_clip.rs +++ b/core/src/display_object/movie_clip.rs @@ -397,7 +397,7 @@ impl<'gc> MovieClip<'gc> { TagCode::DefineButtonCxform => self .0 .write(context.gc_context) - .define_button_cxform(context, reader, tag_len), + .define_button_cxform(context, reader), TagCode::DefineButtonSound => self .0 .write(context.gc_context) @@ -2998,9 +2998,8 @@ impl<'gc, 'a> MovieClipData<'gc> { &mut self, context: &mut UpdateContext<'_, 'gc, '_>, reader: &mut SwfStream<'a>, - tag_len: usize, ) -> DecodeResult { - let button_colors = reader.read_define_button_cxform(tag_len)?; + let button_colors = reader.read_define_button_cxform()?; match context .library .library_for_movie_mut(self.movie()) diff --git a/swf/src/read.rs b/swf/src/read.rs index eaac38e5a..6f6460044 100644 --- a/swf/src/read.rs +++ b/swf/src/read.rs @@ -390,7 +390,7 @@ impl<'a> Reader<'a> { Tag::DefineButton2(Box::new(tag_reader.read_define_button_2()?)) } TagCode::DefineButtonCxform => { - Tag::DefineButtonColorTransform(tag_reader.read_define_button_cxform(length)?) + Tag::DefineButtonColorTransform(tag_reader.read_define_button_cxform()?) } TagCode::DefineButtonSound => { Tag::DefineButtonSound(Box::new(tag_reader.read_define_button_sound()?)) @@ -790,18 +790,15 @@ impl<'a> Reader<'a> { }) } - pub fn read_define_button_cxform(&mut self, tag_length: usize) -> Result { + pub fn read_define_button_cxform(&mut self) -> Result { // SWF19 is incorrect here. You can have >1 color transforms in this tag. They apply // to the characters in a button in sequence. - // We don't know how many color transforms this tag will contain, so read it into a buffer. - let mut reader = Reader::new(self.read_slice(tag_length)?, self.version); - - let id = reader.read_character_id()?; + let id = self.read_character_id()?; let mut color_transforms = Vec::new(); // Read all color transforms. - while let Ok(color_transform) = reader.read_color_transform_no_alpha() { + while let Ok(color_transform) = self.read_color_transform_no_alpha() { color_transforms.push(color_transform); }