diff --git a/core/src/avm2/globals/string.rs b/core/src/avm2/globals/string.rs index 5458981bb..4ef7f9873 100644 --- a/core/src/avm2/globals/string.rs +++ b/core/src/avm2/globals/string.rs @@ -622,7 +622,13 @@ fn to_string<'gc>( this: Object<'gc>, _args: &[Value<'gc>], ) -> Result, Error<'gc>> { - Ok(Value::from(this)) + if let Some(this) = this.as_primitive() { + if let Value::String(v) = *this { + return Ok(v.into()); + } + } + + Ok("".into()) } /// Implements `String.valueOf` diff --git a/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4/test.toml b/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4/test.toml index 29f3cef79..cf6123969 100644 --- a/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4/test.toml +++ b/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4/test.toml @@ -1,2 +1 @@ num_ticks = 1 -known_failure = true diff --git a/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4_2_1/test.toml b/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4_2_1/test.toml index 29f3cef79..cf6123969 100644 --- a/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4_2_1/test.toml +++ b/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4_2_1/test.toml @@ -1,2 +1 @@ num_ticks = 1 -known_failure = true diff --git a/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4_2_rt/test.toml b/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4_2_rt/test.toml index 29f3cef79..cf6123969 100644 --- a/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4_2_rt/test.toml +++ b/tests/tests/swfs/from_avmplus/ecma3/String/e15_5_4_2_rt/test.toml @@ -1,2 +1 @@ num_ticks = 1 -known_failure = true