chore: Update quick-xml to 0.35.0

This commit is contained in:
TÖRÖK Attila 2024-06-19 00:24:09 +02:00 committed by Nathan Adams
parent c07f5cfca5
commit 6aa2dde859
5 changed files with 33 additions and 13 deletions

13
Cargo.lock generated
View File

@ -3976,6 +3976,15 @@ dependencies = [
"memchr",
]
[[package]]
name = "quick-xml"
version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86e446ed58cef1bbfe847bc2fda0e2e4ea9f0e57b90c507d4781292590d72a4e"
dependencies = [
"memchr",
]
[[package]]
name = "quinn"
version = "0.11.2"
@ -4366,7 +4375,7 @@ dependencies = [
"num-traits",
"percent-encoding",
"png",
"quick-xml",
"quick-xml 0.35.0",
"rand",
"realfft",
"regress",
@ -6211,7 +6220,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67da50b9f80159dec0ea4c11c13e24ef9e7574bd6ce24b01860a175010cea565"
dependencies = [
"proc-macro2",
"quick-xml",
"quick-xml 0.31.0",
"quote",
]

View File

@ -29,7 +29,7 @@ bitflags = { workspace = true }
smallvec = { version = "1.13.2", features = ["union"] }
num-traits = { workspace = true }
num-derive = { workspace = true }
quick-xml = "0.31.0"
quick-xml = "0.35.0"
downcast-rs = "1.2.1"
url = { workspace = true }
weak-table = "0.3.2"

View File

@ -11,6 +11,7 @@ use crate::context::GcContext;
use crate::string::{AvmString, WStr, WString};
use crate::xml::{custom_unescape, XmlNode, ELEMENT_NODE, TEXT_NODE};
use gc_arena::{Collect, GcCell, Mutation};
use quick_xml::errors::IllFormedError;
use quick_xml::events::attributes::AttrError;
use quick_xml::{events::Event, Reader};
@ -141,13 +142,18 @@ impl<'gc> Xml<'gc> {
loop {
let event = parser.read_event().map_err(|error| {
self.0.write(activation.context.gc_context).status = match error {
quick_xml::Error::UnexpectedEof(_)
quick_xml::Error::Syntax(_)
| quick_xml::Error::InvalidAttr(AttrError::ExpectedEq(_))
| quick_xml::Error::InvalidAttr(AttrError::Duplicated(_, _)) => {
XmlStatus::ElementMalformed
}
quick_xml::Error::EndEventMismatch { .. } => XmlStatus::MismatchedEnd,
quick_xml::Error::XmlDeclWithoutVersion(_) => XmlStatus::DeclNotTerminated,
quick_xml::Error::IllFormed(
IllFormedError::MismatchedEndTag { .. }
| IllFormedError::UnmatchedEndTag { .. },
) => XmlStatus::MismatchedEnd,
quick_xml::Error::IllFormed(IllFormedError::MissingDeclVersion(_)) => {
XmlStatus::DeclNotTerminated
}
quick_xml::Error::InvalidAttr(AttrError::UnquotedValue(_)) => {
XmlStatus::AttributeNotTerminated
}

View File

@ -5,6 +5,7 @@ use std::{
use gc_arena::{Collect, GcCell, Mutation};
use quick_xml::{
errors::SyntaxError as XmlSyntaxError,
events::{attributes::AttrError as XmlAttrError, BytesStart, Event},
name::ResolveResult,
Error as XmlError, NsReader,
@ -59,23 +60,24 @@ fn make_xml_error<'gc>(activation: &mut Activation<'_, 'gc>, err: XmlError) -> E
"Error #1104: Attribute was already specified for element.",
1104,
),
XmlError::UnexpectedEof(currently_parsing) => match currently_parsing.as_str() {
"CData" => type_error(
XmlError::Syntax(syntax_error) => match syntax_error {
XmlSyntaxError::UnclosedCData => type_error(
activation,
"Error #1091: XML parser failure: Unterminated CDATA section.",
1091,
),
"DOCTYPE" => type_error(
XmlSyntaxError::UnclosedDoctype => type_error(
activation,
"Error #1093: XML parser failure: Unterminated DOCTYPE declaration.",
1093,
),
"Comment" => type_error(
XmlSyntaxError::UnclosedComment => type_error(
activation,
"Error #1094: XML parser failure: Unterminated comment.",
1094,
),
"XmlDecl" => type_error(
XmlSyntaxError::UnclosedPIOrXmlDecl => type_error(
activation,
"Error #1097: XML parser failure: Unterminated processing instruction.",
1097,

View File

@ -671,8 +671,11 @@ impl FormatSpans {
let mut last_closed_font: Option<TextSpanFont> = None;
let mut reader = Reader::from_reader(&raw_bytes[..]);
reader.expand_empty_elements(true);
reader.check_end_names(false);
let reader_config = reader.config_mut();
reader_config.expand_empty_elements = true;
reader_config.check_end_names = false;
reader_config.allow_unmatched_ends = true;
loop {
match reader.read_event() {
Ok(Event::Start(ref e)) => {