aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-05-26 16:29:42 -0500
committerbors-servo <metajack+bors@gmail.com>2015-05-26 16:29:42 -0500
commitdf2f8d0636922a7e89895fa61fdba30099cec9ea (patch)
tree0e651b928258c2b80d102b52f66b70698b825f17
parent54afa01dd665b8facbbba7d49974ac5532e3b83f (diff)
parenta3d463093ec6ff445d9e1d3352696754431ae68b (diff)
downloadservo-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.rs32
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)