swf: Allow construct clip events in SWFv6

This commit is contained in:
Mike Welsh 2020-11-22 18:26:26 -08:00
parent d9ac9fa076
commit eb0b16790c
2 changed files with 4 additions and 3 deletions

View File

@ -2356,7 +2356,9 @@ impl<R: Read> Reader<R> {
self.read_u16()?;
} else {
self.read_ubits(5)?;
if self.read_bit()? && self.version >= 7 {
if self.read_bit()? {
// Construct was only added in SWF7, but it's not version-gated;
// Construct events will still fire in SWF6 in a v7+ player. (#1424)
event_list.insert(ClipEventFlag::Construct);
}
if self.read_bit()? {

View File

@ -2237,8 +2237,7 @@ impl<W: Write> Writer<W> {
self.write_bit(clip_events.contains(ClipEventFlag::Data))?;
if self.version >= 6 {
self.write_ubits(5, 0)?;
let has_construct = self.version >= 7 && clip_events.contains(ClipEventFlag::Construct);
self.write_bit(has_construct)?;
self.write_bit(clip_events.contains(ClipEventFlag::Construct))?;
self.write_bit(clip_events.contains(ClipEventFlag::KeyPress))?;
self.write_bit(clip_events.contains(ClipEventFlag::DragOut))?;
self.write_u8(0)?;