diff options
-rw-r--r-- | src/corelib/io/qurl.cpp | 4 | ||||
-rw-r--r-- | tests/auto/qurl/tst_qurl.cpp | 6 |
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")); } { |