From d1ff987835c459513dbce0c48fc40c6cdcbe1134 Mon Sep 17 00:00:00 2001 From: David Faure Date: Sat, 21 Jul 2012 10:54:08 +0200 Subject: QUrl: add missing detach() in setEncodedUrl, spotted by Marc Mutz. Reported-by: Marc Mutz Change-Id: If53957bafa9c077981c8ec5107313bc25469b579 Reviewed-by: Thiago Macieira --- src/corelib/io/qurl.cpp | 4 ++-- 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")); } { -- cgit v0.12