diff --git a/core/src/xml/tree.rs b/core/src/xml/tree.rs index ef45764f8..2aadb79b0 100644 --- a/core/src/xml/tree.rs +++ b/core/src/xml/tree.rs @@ -456,7 +456,7 @@ impl<'gc> XmlNode<'gc> { result.push_byte(b' '); result.push_str(&key); result.push_str(WStr::from_units(b"=\"")); - result.push_str(WStr::from_units(value.as_bytes())); + result.push_utf8(&value); result.push_byte(b'"'); } @@ -480,7 +480,7 @@ impl<'gc> XmlNode<'gc> { let value = self.0.read().node_value.unwrap(); let value = value.to_utf8_lossy(); let value = escape(&value); - result.push_str(WStr::from_units(value.as_bytes())); + result.push_utf8(&value); } Ok(()) diff --git a/tests/tests/swfs/avm1/xml_to_string/output.txt b/tests/tests/swfs/avm1/xml_to_string/output.txt index f23748090..b605fe699 100644 --- a/tests/tests/swfs/avm1/xml_to_string/output.txt +++ b/tests/tests/swfs/avm1/xml_to_string/output.txt @@ -1,8 +1,13 @@ I'm a text node! +<продукция>Название_Name I'm a text node! +<продукция>Название_Name "Test" Node 2 I'm a text node! +<продукция>Название_Name "Test" Node 2 -I'm a text node! +I'm a text node! +<продукция>Название_Name +<продукция>Название_Name diff --git a/tests/tests/swfs/avm1/xml_to_string/test.fla b/tests/tests/swfs/avm1/xml_to_string/test.fla index bc8f305a3..43c80aa99 100644 Binary files a/tests/tests/swfs/avm1/xml_to_string/test.fla and b/tests/tests/swfs/avm1/xml_to_string/test.fla differ diff --git a/tests/tests/swfs/avm1/xml_to_string/test.swf b/tests/tests/swfs/avm1/xml_to_string/test.swf index 1c452d5f1..0b4b4017e 100644 Binary files a/tests/tests/swfs/avm1/xml_to_string/test.swf and b/tests/tests/swfs/avm1/xml_to_string/test.swf differ