diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-05-26 16:29:42 -0500 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-05-26 16:29:42 -0500 |
commit | df2f8d0636922a7e89895fa61fdba30099cec9ea (patch) | |
tree | 0e651b928258c2b80d102b52f66b70698b825f17 | |
parent | 54afa01dd665b8facbbba7d49974ac5532e3b83f (diff) | |
parent | a3d463093ec6ff445d9e1d3352696754431ae68b (diff) | |
download | servo-df2f8d0636922a7e89895fa61fdba30099cec9ea.tar.gz servo-df2f8d0636922a7e89895fa61fdba30099cec9ea.zip |
Auto merge of #6187 - tamird:cleanup-validate-and-extract, r=mbrubeck
Also `debug_assert!`s that `splitn` was called with the
correct `count` argument.
Adaptation of #5778.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6187)
<!-- Reviewable:end -->
-rw-r--r-- | components/script/dom/bindings/utils.rs | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs index 55933484165..612cba46f35 100644 --- a/components/script/dom/bindings/utils.rs +++ b/components/script/dom/bindings/utils.rs @@ -637,19 +637,29 @@ pub fn validate_and_extract(namespace: Option<DOMString>, qualified_name: &str) // Step 2. try!(validate_qualified_name(qualified_name)); - let (prefix, local_name) = if qualified_name.contains(":") { - // Step 5. - let mut parts = qualified_name.splitn(2, ':'); - let prefix = parts.next().unwrap(); - debug_assert!(!prefix.is_empty()); - let local_name = parts.next().unwrap(); - debug_assert!(!local_name.contains(":")); - (Some(prefix), local_name) - } else { - (None, qualified_name) + let colon = ':'; + + // Step 5. + let mut parts = qualified_name.splitn(2, colon); + + let (maybe_prefix, local_name) = { + let maybe_prefix = parts.next(); + let maybe_local_name = parts.next(); + + debug_assert!(parts.next().is_none()); + + if let Some(local_name) = maybe_local_name { + debug_assert!(!maybe_prefix.unwrap().is_empty()); + + (maybe_prefix, local_name) + } else { + (None, maybe_prefix.unwrap()) + } }; - match (namespace, prefix) { + debug_assert!(!local_name.contains(colon)); + + match (namespace, maybe_prefix) { (ns!(""), Some(_)) => { // Step 6. Err(Error::Namespace) |