avm1: Function base clip defaults to `this` if clip no longer exists

When a function is defined, the base clip is stored in the function
object, and used when the function is called in SWFv6+. This
affects the target clip for GotoFrame and other actions.

However, if that base clip no longer exists when the function is
called, the base clip should default to the `this` display object.
Previously Ruffle would still use the previously unloaded base clip.
This commit is contained in:
Mike Welsh 2021-10-11 14:53:24 -07:00
parent f37730153a
commit 219d3af284
1 changed files with 1 additions and 1 deletions

View File

@ -305,7 +305,7 @@ impl<'gc> Executable<'gc> {
};
let max_recursion_depth = activation.context.avm1.max_recursion_depth();
let base_clip = if effective_ver > 5 {
let base_clip = if effective_ver > 5 && !af.base_clip.removed() {
af.base_clip
} else {
this.as_display_object()