From b9ac6725269b9726cb57e17ed164cda02d41f086 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Mon, 16 Nov 2015 13:29:57 -0500 Subject: [PATCH] Bug 1224580. Copy of URLSearchParams should not copy its observer pointer. r=baku --- dom/base/URLSearchParams.cpp | 2 +- dom/base/test/test_urlSearchParams.html | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/dom/base/URLSearchParams.cpp b/dom/base/URLSearchParams.cpp index 68af659a9370..d9f3132b5f49 100644 --- a/dom/base/URLSearchParams.cpp +++ b/dom/base/URLSearchParams.cpp @@ -315,7 +315,7 @@ URLSearchParams::URLSearchParams(nsISupports* aParent, const URLSearchParams& aOther) : mParams(new URLParams(*aOther.mParams.get())) , mParent(aParent) - , mObserver(aOther.mObserver) + , mObserver(nullptr) { } diff --git a/dom/base/test/test_urlSearchParams.html b/dom/base/test/test_urlSearchParams.html index e5333b7e5bf6..a3036f8076bf 100644 --- a/dom/base/test/test_urlSearchParams.html +++ b/dom/base/test/test_urlSearchParams.html @@ -300,6 +300,20 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=887836 runTest(); } + function testCopyConstructor() { + var url = new URL("http://example.com/"); + var p = url.searchParams; + var q = new URLSearchParams(p); + q.set("a", "b"); + is(url.href, "http://example.com/", + "Messing with copy of URLSearchParams should not affect URL"); + p.set("c", "d"); + is(url.href, "http://example.com/?c=d", + "Messing with URLSearchParams should affect URL"); + + runTest(); + } + var tests = [ testSimpleURLSearchParams, testCopyURLSearchParams, @@ -314,6 +328,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=887836 testSet, testIterable, testZeroHandling, + testCopyConstructor, ]; function runTest() {