avm2: Fix getQualifiedClassName for null and undefined

This commit is contained in:
Aaron Hill 2022-09-26 21:54:10 -05:00
parent 66fa67cdcc
commit 53f42e0bec
4 changed files with 15 additions and 6 deletions

View File

@ -193,10 +193,14 @@ pub fn get_qualified_class_name<'gc>(
_this: Option<Object<'gc>>, _this: Option<Object<'gc>>,
args: &[Value<'gc>], args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> { ) -> Result<Value<'gc>, Error<'gc>> {
let obj = args // This is a native method, which enforces the argument count.
.get(0) let val = args[0];
.unwrap_or(&Value::Undefined) match val {
.coerce_to_object(activation)?; 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() { let class = match obj.as_class_object() {
Some(class) => class, Some(class) => class,

View File

@ -20,4 +20,7 @@ trace(getQualifiedClassName(String));
trace(getQualifiedClassName(new flash.utils.ByteArray())); trace(getQualifiedClassName(new flash.utils.ByteArray()));
trace(getQualifiedClassName(new String())); trace(getQualifiedClassName(new String()));
trace(getQualifiedClassName(null));
trace(getQualifiedClassName(undefined));

View File

@ -5,4 +5,6 @@ com.very.long.namespace::example
int int
String String
flash.utils::ByteArray flash.utils::ByteArray
String String
null
void