From c360d45729a3fde837f4ce380e67cb9b6398f3a3 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Sat, 11 Nov 2023 17:53:23 -0500 Subject: [PATCH] avm2: Use 'has_own_property' to check for prop in 'resolve_definition' If Actionscript explicitly sets the property to 'undefined', we should still succeed. --- core/src/avm2/activation.rs | 5 ++--- .../swfs/from_avmplus/ecma3/Statements/eswitch_004/test.toml | 1 - .../swfs/from_avmplus/ecma3/Statements/ewhile_002/test.toml | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/core/src/avm2/activation.rs b/core/src/avm2/activation.rs index 450bcd1d1..33f5ce4dc 100644 --- a/core/src/avm2/activation.rs +++ b/core/src/avm2/activation.rs @@ -284,11 +284,10 @@ impl<'a, 'gc> Activation<'a, 'gc> { } else if let Some(result) = outer_scope.resolve(name, self)? { Ok(Some(result)) } else if let Some(global) = self.global_scope() { - let prop = global.base().get_property_local(name, self)?; - if prop == Value::Undefined { + if !global.base().has_own_property(name) { return Ok(None); } - Ok(Some(prop)) + return Ok(Some(global.base().get_property_local(name, self)?)); } else { Ok(None) } diff --git a/tests/tests/swfs/from_avmplus/ecma3/Statements/eswitch_004/test.toml b/tests/tests/swfs/from_avmplus/ecma3/Statements/eswitch_004/test.toml index 29f3cef79..cf6123969 100644 --- a/tests/tests/swfs/from_avmplus/ecma3/Statements/eswitch_004/test.toml +++ b/tests/tests/swfs/from_avmplus/ecma3/Statements/eswitch_004/test.toml @@ -1,2 +1 @@ num_ticks = 1 -known_failure = true diff --git a/tests/tests/swfs/from_avmplus/ecma3/Statements/ewhile_002/test.toml b/tests/tests/swfs/from_avmplus/ecma3/Statements/ewhile_002/test.toml index 29f3cef79..cf6123969 100644 --- a/tests/tests/swfs/from_avmplus/ecma3/Statements/ewhile_002/test.toml +++ b/tests/tests/swfs/from_avmplus/ecma3/Statements/ewhile_002/test.toml @@ -1,2 +1 @@ num_ticks = 1 -known_failure = true