summaryrefslogtreecommitdiff
path: root/dom
diff options
context:
space:
mode:
authorPale Moon <git-repo@palemoon.org>2016-03-31 14:39:12 +0200
committerPale Moon <git-repo@palemoon.org>2016-03-31 14:39:12 +0200
commit77f85893b4ad37d6ba8a037eb3253fff1dc2e1b7 (patch)
tree05fbbcd053523740ab9b838350d037d7b5311e28 /dom
parent0d7c146acd32e6f4b313e45e599ccbb602b5b012 (diff)
downloadpalemoon-gre-77f85893b4ad37d6ba8a037eb3253fff1dc2e1b7.tar.gz
Clean up nsLocation logic.
Diffstat (limited to 'dom')
-rw-r--r--dom/base/nsLocation.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/dom/base/nsLocation.cpp b/dom/base/nsLocation.cpp
index 20acf293d..2789934ef 100644
--- a/dom/base/nsLocation.cpp
+++ b/dom/base/nsLocation.cpp
@@ -720,15 +720,27 @@ nsLocation::SetProtocol(const nsAString& aProtocol)
nsCOMPtr<nsIURI> uri;
nsresult rv = GetWritableURI(getter_AddRefs(uri));
+ if (NS_FAILED(rv) || !uri) {
+ return rv;
+ }
- if (uri) {
- rv = uri->SetScheme(NS_ConvertUTF16toUTF8(aProtocol));
- if (NS_SUCCEEDED(rv)) {
- SetURI(uri);
- }
+ rv = uri->SetScheme(NS_ConvertUTF16toUTF8(aProtocol));
+ if (NS_FAILED(rv)) {
+ return rv;
}
- return rv;
+ nsAutoCString newSpec;
+ rv = uri->GetSpec(newSpec);
+ if (NS_FAILED(rv)) {
+ return rv;
+ }
+ // We may want a new URI class for the new URI, so recreate it:
+ rv = NS_NewURI(getter_AddRefs(uri), newSpec);
+ if (NS_FAILED(rv)) {
+ return rv;
+ }
+
+ return SetURI(uri);
}
NS_IMETHODIMP