diff --git a/core/src/avm2/globals/flash/utils.rs b/core/src/avm2/globals/flash/utils.rs index 326005be7..27087e4e1 100644 --- a/core/src/avm2/globals/flash/utils.rs +++ b/core/src/avm2/globals/flash/utils.rs @@ -193,10 +193,14 @@ pub fn get_qualified_class_name<'gc>( _this: Option>, args: &[Value<'gc>], ) -> Result, Error<'gc>> { - let obj = args - .get(0) - .unwrap_or(&Value::Undefined) - .coerce_to_object(activation)?; + // This is a native method, which enforces the argument count. + let val = args[0]; + match val { + Value::Null => return Ok("null".into()), + Value::Undefined => return Ok("void".into()), + _ => {} + } + let obj = val.coerce_to_object(activation)?; let class = match obj.as_class_object() { Some(class) => class, diff --git a/tests/tests/swfs/avm2/get_qualified_class_name/Test.as b/tests/tests/swfs/avm2/get_qualified_class_name/Test.as index eed7ee005..bda680ea2 100644 --- a/tests/tests/swfs/avm2/get_qualified_class_name/Test.as +++ b/tests/tests/swfs/avm2/get_qualified_class_name/Test.as @@ -20,4 +20,7 @@ trace(getQualifiedClassName(String)); trace(getQualifiedClassName(new flash.utils.ByteArray())); -trace(getQualifiedClassName(new String())); \ No newline at end of file +trace(getQualifiedClassName(new String())); + +trace(getQualifiedClassName(null)); +trace(getQualifiedClassName(undefined)); \ No newline at end of file diff --git a/tests/tests/swfs/avm2/get_qualified_class_name/output.txt b/tests/tests/swfs/avm2/get_qualified_class_name/output.txt index 2a25bf3a9..5ffe76f7c 100644 --- a/tests/tests/swfs/avm2/get_qualified_class_name/output.txt +++ b/tests/tests/swfs/avm2/get_qualified_class_name/output.txt @@ -5,4 +5,6 @@ com.very.long.namespace::example int String flash.utils::ByteArray -String \ No newline at end of file +String +null +void diff --git a/tests/tests/swfs/avm2/get_qualified_class_name/test.swf b/tests/tests/swfs/avm2/get_qualified_class_name/test.swf index 49bb12f53..a1dacc984 100644 Binary files a/tests/tests/swfs/avm2/get_qualified_class_name/test.swf and b/tests/tests/swfs/avm2/get_qualified_class_name/test.swf differ