Backed out changeset 689ce5819b24 (bug 1170274) for w2 test failures
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Wed, 17 Jun 2015 15:59:45 +0200
changeset 249357 d8df8c6f33ef4b7f215cc988daa476baa5629f0a
parent 249356 e846fe0567c111c17ec04e580899c6b10a789763
child 249358 1da97e961c3d2c9674b4fb621ab7f6b1efe48ee3
push id28923
push userryanvm@gmail.com
push dateWed, 17 Jun 2015 18:57:11 +0000
treeherdermozilla-central@099d6cd6725e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1170274
milestone41.0a1
backs out689ce5819b24dcc8bd8491c87652c1e9ba94628d
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out changeset 689ce5819b24 (bug 1170274) for w2 test failures
dom/html/nsGenericHTMLElement.cpp
--- a/dom/html/nsGenericHTMLElement.cpp
+++ b/dom/html/nsGenericHTMLElement.cpp
@@ -1727,44 +1727,45 @@ nsGenericHTMLElement::GetURIListAttr(nsI
 
   nsAutoString value;
   if (!GetAttr(kNameSpaceID_None, aAttr, value))
     return NS_OK;
 
   nsIDocument* doc = OwnerDoc(); 
   nsCOMPtr<nsIURI> baseURI = GetBaseURI();
 
-  NS_ConvertUTF16toUTF8 str(value);
-  char* buffer = str.BeginWriting();
-
-  while (char* token = NS_strtok(" ", &buffer)) {
-    if (!aResult.IsEmpty()) {
-      aResult.Append(NS_LITERAL_STRING(" "));
+  // Value contains relative URIs split on spaces (U+0020)
+  const char16_t *start = value.BeginReading();
+  const char16_t *end   = value.EndReading();
+  const char16_t *iter  = start;
+  for (;;) {
+    if (iter < end && *iter != ' ') {
+      ++iter;
+    } else {  // iter is pointing at either end or a space
+      while (*start == ' ' && start < iter)
+        ++start;
+      if (iter != start) {
+        if (!aResult.IsEmpty())
+          aResult.Append(char16_t(' '));
+        const nsSubstring& uriPart = Substring(start, iter);
+        nsCOMPtr<nsIURI> attrURI;
+        nsContentUtils::NewURIWithDocumentCharset(getter_AddRefs(attrURI),
+                                                  uriPart, doc, baseURI);
+        if (attrURI) {
+          nsAutoCString spec;
+          attrURI->GetSpec(spec);
+          AppendUTF8toUTF16(spec, aResult);
+        } else {
+          aResult.Append(uriPart);
+        }
+      }
+      start = iter = iter + 1;
+      if (iter >= end)
+        break;
     }
-
-    NS_ConvertUTF8toUTF16 uriPart(token);
-    nsCOMPtr<nsIURI> attrURI;
-    nsresult rv =
-      nsContentUtils::NewURIWithDocumentCharset(getter_AddRefs(attrURI),
-                                                uriPart, doc, baseURI);
-    if (NS_FAILED(rv)) {
-      aResult.Append(uriPart);
-      continue;
-    }
-
-    MOZ_ASSERT(attrURI);
-
-    nsAutoCString spec;
-    rv = attrURI->GetSpec(spec);
-    if (NS_WARN_IF(NS_FAILED(rv))) {
-      aResult.Append(uriPart);
-      continue;
-    }
-
-    AppendUTF8toUTF16(spec, aResult);
   }
 
   return NS_OK;
 }
 
 HTMLMenuElement*
 nsGenericHTMLElement::GetContextMenu() const
 {