From eb0b16790c79d1740009ab202216ec71c5e23c5f Mon Sep 17 00:00:00 2001 From: Mike Welsh Date: Sun, 22 Nov 2020 18:26:26 -0800 Subject: [PATCH] swf: Allow construct clip events in SWFv6 --- swf/src/read.rs | 4 +++- swf/src/write.rs | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/swf/src/read.rs b/swf/src/read.rs index 71a1b5558..3a18a07b3 100644 --- a/swf/src/read.rs +++ b/swf/src/read.rs @@ -2356,7 +2356,9 @@ impl Reader { 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()? { diff --git a/swf/src/write.rs b/swf/src/write.rs index b3c5b8f25..9152e854d 100644 --- a/swf/src/write.rs +++ b/swf/src/write.rs @@ -2237,8 +2237,7 @@ impl Writer { 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)?;