diff --git a/core/src/avm2/globals/array.rs b/core/src/avm2/globals/array.rs index 56e1f860c..7f0af362e 100644 --- a/core/src/avm2/globals/array.rs +++ b/core/src/avm2/globals/array.rs @@ -216,14 +216,11 @@ pub fn to_locale_string<'gc>( join_inner(act, this, &[",".into()], |v, activation| { let o = v.coerce_to_object(activation)?; - let tls = o.get_property( - o, + o.call_property( &QName::new(Namespace::public(), "toLocaleString").into(), + &[], activation, - )?; - - tls.coerce_to_object(activation)? - .call(Some(o), &[], activation, o.proto()) + ) }) } diff --git a/core/src/avm2/globals/vector.rs b/core/src/avm2/globals/vector.rs index bf4216301..26a641b9d 100644 --- a/core/src/avm2/globals/vector.rs +++ b/core/src/avm2/globals/vector.rs @@ -402,13 +402,11 @@ pub fn to_locale_string<'gc>( ) -> Result, Error> { join_inner(activation, this, &[",".into()], |v, act| { if let Ok(o) = v.coerce_to_object(act) { - let ls = o.get_property( - o, + o.call_property( &QName::new(Namespace::public(), "toLocaleString").into(), + &[], act, - )?; - - ls.coerce_to_object(act)?.call(Some(o), &[], act, None) + ) } else { Ok(v) } diff --git a/core/src/avm2/value.rs b/core/src/avm2/value.rs index e0724b4d2..90c7c9de5 100644 --- a/core/src/avm2/value.rs +++ b/core/src/avm2/value.rs @@ -302,20 +302,28 @@ impl<'gc> Value<'gc> { let mut prim = self.clone(); let object = *o; - if let Value::Object(f) = + if let Value::Object(_) = object.get_property(*o, &QName::dynamic_name("toString").into(), activation)? { - prim = f.call(Some(*o), &[], activation, None)?; + prim = object.call_property( + &QName::dynamic_name("toString").into(), + &[], + activation, + )?; } if prim.is_primitive() { return Ok(prim); } - if let Value::Object(f) = + if let Value::Object(_) = object.get_property(*o, &QName::dynamic_name("valueOf").into(), activation)? { - prim = f.call(Some(*o), &[], activation, None)?; + prim = object.call_property( + &QName::dynamic_name("valueOf").into(), + &[], + activation, + )?; } if prim.is_primitive() { @@ -328,20 +336,28 @@ impl<'gc> Value<'gc> { let mut prim = self.clone(); let object = *o; - if let Value::Object(f) = + if let Value::Object(_) = object.get_property(*o, &QName::dynamic_name("valueOf").into(), activation)? { - prim = f.call(Some(*o), &[], activation, None)?; + prim = object.call_property( + &QName::dynamic_name("valueOf").into(), + &[], + activation, + )?; } if prim.is_primitive() { return Ok(prim); } - if let Value::Object(f) = + if let Value::Object(_) = object.get_property(*o, &QName::dynamic_name("toString").into(), activation)? { - prim = f.call(Some(*o), &[], activation, None)?; + prim = object.call_property( + &QName::dynamic_name("toString").into(), + &[], + activation, + )?; } if prim.is_primitive() {