diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2015-04-03 13:53:48 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2015-04-06 14:12:20 +0200 |
commit | c557736d26abf2f5de4dd5fe43623766c8342d72 (patch) | |
tree | 80c9d850a7ef7f4e4bb22bd542d22c8d0f6e002f /components/script/dom | |
parent | 1906f835b9e9e99ed65e183e3c52c983ed8a651a (diff) | |
download | servo-c557736d26abf2f5de4dd5fe43623766c8342d72.tar.gz servo-c557736d26abf2f5de4dd5fe43623766c8342d72.zip |
Fix xml_name_type()
Names with a trailing colon are not qualified names.
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/bindings/utils.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs index 64080fbdfce..7faca76b6c6 100644 --- a/components/script/dom/bindings/utils.rs +++ b/components/script/dom/bindings/utils.rs @@ -653,7 +653,7 @@ pub fn xml_name_type(name: &str) -> XMLName { let mut iter = name.chars(); let mut non_qname_colons = false; let mut seen_colon = false; - match iter.next() { + let mut last = match iter.next() { None => return XMLName::InvalidXMLName, Some(c) => { if !is_valid_start(c) { @@ -662,10 +662,11 @@ pub fn xml_name_type(name: &str) -> XMLName { if c == ':' { non_qname_colons = true; } + c } - } + }; - for c in name.chars() { + for c in iter { if !is_valid_continuation(c) { return XMLName::InvalidXMLName; } @@ -675,6 +676,11 @@ pub fn xml_name_type(name: &str) -> XMLName { false => seen_colon = true } } + last = c + } + + if last == ':' { + non_qname_colons = true } match non_qname_colons { |