summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/io/qurl.cpp4
-rw-r--r--tests/auto/qurl/tst_qurl.cpp6
2 files changed, 8 insertions, 2 deletions
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index de5b0a3..e6ad1ea 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -4400,8 +4400,8 @@ static inline char toHex(quint8 c)
void QUrl::setEncodedUrl(const QByteArray &encodedUrl, ParsingMode parsingMode)
{
QByteArray tmp = encodedUrl;
- if (!d) d = new QUrlPrivate;
- else d->clear();
+ detach();
+ d->clear();
if ((d->parsingMode = parsingMode) == TolerantMode) {
// Replace stray % with %25
QByteArray copy = tmp;
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index 7a6713f..707174d 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -2690,6 +2690,12 @@ void tst_QUrl::tolerantParser()
url.setEncodedUrl("data:text/css,div%20{%20border-right:%20solid;%20}");
QCOMPARE(url.toEncoded(), QByteArray("data:text/css,div%20%7B%20border-right:%20solid;%20%7D"));
+
+ QUrl url2 = url;
+ url2.setEncodedUrl("http://www.example.com");
+ // Check that it detached
+ QCOMPARE(url.toEncoded(), QByteArray("data:text/css,div%20%7B%20border-right:%20solid;%20%7D"));
+ QCOMPARE(url2.toEncoded(), QByteArray("http://www.example.com"));
}
{