diff options
author | Pale Moon <git-repo@palemoon.org> | 2016-03-31 14:39:12 +0200 |
---|---|---|
committer | Pale Moon <git-repo@palemoon.org> | 2016-03-31 14:39:12 +0200 |
commit | 77f85893b4ad37d6ba8a037eb3253fff1dc2e1b7 (patch) | |
tree | 05fbbcd053523740ab9b838350d037d7b5311e28 /dom | |
parent | 0d7c146acd32e6f4b313e45e599ccbb602b5b012 (diff) | |
download | palemoon-gre-77f85893b4ad37d6ba8a037eb3253fff1dc2e1b7.tar.gz |
Clean up nsLocation logic.
Diffstat (limited to 'dom')
-rw-r--r-- | dom/base/nsLocation.cpp | 24 |
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 |