aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2015-04-03 13:53:48 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2015-04-06 14:12:20 +0200
commitc557736d26abf2f5de4dd5fe43623766c8342d72 (patch)
tree80c9d850a7ef7f4e4bb22bd542d22c8d0f6e002f /components/script/dom
parent1906f835b9e9e99ed65e183e3c52c983ed8a651a (diff)
downloadservo-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.rs12
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 {