diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-09-22 07:24:23 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-09-22 07:24:23 (GMT) |
commit | a560dca4541ff5839ba0588ce27e093caeb4780b (patch) | |
tree | 260c51868061c77ca524c31e4ecbb6215cfc50b0 /src/corelib/io/qurl.cpp | |
parent | 9ca64357d6ad9a2a9dd212fc5962169ed2c4bbc1 (diff) | |
parent | 9188d5c1eead0e616fc4debbab1e6430b741fd9d (diff) | |
download | Qt-a560dca4541ff5839ba0588ce27e093caeb4780b.zip Qt-a560dca4541ff5839ba0588ce27e093caeb4780b.tar.gz Qt-a560dca4541ff5839ba0588ce27e093caeb4780b.tar.bz2 |
Merge branch 'qt-master-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration into master-integration
* 'qt-master-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration: (231 commits)
Fixed compile warning on Windows.
Fixed painter path drawing on FBO without stencil buffer.
qmake: Make smart library merge architecture-aware
Slovenian translation: some updates and fixes
Fixed memory leak in Symbian when Options menu was launched.
Fixed color of cosmetic pens when printing under Windows.
Fixed infinite loop when loading jpeg without EOI from memory.
Fixes QPen dash offset for OpenGL paint engines (1.x & 2.x).
Added galician translation
Support multisampled pbuffers under Windows.
tst_qpixmapfilter: Fix compilation in namespace
qtextcodec_symbian: Add few aliases
Give a warning in QPixmap::handle() if pixmap is not X11 class.
Make QStaticText honor QPainter::pen() for rich text on X11 w/raster
Fix one hang of QNAM on Symbian.
Update QtDeclarative def files
Update QtGui def files
Update QtCore bwins def file
Fix Symbian def file for a9e5329168
Make build on Symbian
...
Diffstat (limited to 'src/corelib/io/qurl.cpp')
-rw-r--r-- | src/corelib/io/qurl.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index b320624..b122cd2 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -3464,9 +3464,8 @@ QString QUrlPrivate::canonicalHost() const that->host = host.toLower(); } else { that->host = qt_ACE_do(host, NormalizeAce); - if (that->host.isNull()) - that->isHostValid = false; } + that->isHostValid = !that->host.isNull(); return that->host; } @@ -3781,6 +3780,10 @@ void QUrlPrivate::validate() const QString auth = authority(); // causes the non-encoded forms to be valid + // authority() calls canonicalHost() which sets this + if (!isHostValid) + return; + if (scheme == QLatin1String("mailto")) { if (!host.isEmpty() || port != -1 || !userName.isEmpty() || !password.isEmpty()) { that->isValid = false; @@ -3954,9 +3957,10 @@ QByteArray QUrlPrivate::toEncoded(QUrl::FormattingOptions options) const url += scheme.toLatin1(); url += ':'; } + QString savedHost = host; // pre-validation, may be invalid! QString auth = authority(); bool doFileScheme = scheme == QLatin1String("file") && encodedPath.startsWith('/'); - if ((options & QUrl::RemoveAuthority) != QUrl::RemoveAuthority && (!auth.isEmpty() || doFileScheme)) { + if ((options & QUrl::RemoveAuthority) != QUrl::RemoveAuthority && (!auth.isEmpty() || doFileScheme || !savedHost.isEmpty())) { if (doFileScheme && !encodedPath.startsWith('/')) url += '/'; url += "//"; @@ -3982,6 +3986,12 @@ QByteArray QUrlPrivate::toEncoded(QUrl::FormattingOptions options) const url += '['; url += host.toLatin1(); url += ']'; + } else if (host.isEmpty() && !savedHost.isEmpty()) { + // this case is only possible with an invalid URL + // it's here only so that we can keep the original, invalid hostname + // in encodedOriginal. + // QUrl::isValid() will return false, so toEncoded() can be anything (it's not valid) + url += savedHost.toUtf8(); } else { url += QUrl::toAce(host); } @@ -4101,7 +4111,7 @@ const QByteArray &QUrlPrivate::normalized() const QString QUrlPrivate::createErrorString() { - if (isValid) + if (isValid && isHostValid) return QString(); QString errorString(QLatin1String(QT_TRANSLATE_NOOP(QUrl, "Invalid URL \""))); @@ -4125,7 +4135,10 @@ QString QUrlPrivate::createErrorString() errorString += QLatin1String(QT_TRANSLATE_NOOP(QUrl, "\'")); } else { errorString += QLatin1String(QT_TRANSLATE_NOOP(QUrl, ": ")); - errorString += QLatin1String(errorInfo._message); + if (isHostValid) + errorString += QLatin1String(errorInfo._message); + else + errorString += QLatin1String(QT_TRANSLATE_NOOP(QUrl, "invalid hostname")); } if (errorInfo._found) { errorString += QLatin1String(QT_TRANSLATE_NOOP(QUrl, ", but found \'")); @@ -4488,7 +4501,7 @@ void QUrl::setAuthority(const QString &authority) if (!QURL_HASFLAG(d->stateFlags, QUrlPrivate::Parsed)) d->parse(); detach(); - QURL_UNSETFLAG(d->stateFlags, QUrlPrivate::Validated | QUrlPrivate::Normalized); + QURL_UNSETFLAG(d->stateFlags, QUrlPrivate::Validated | QUrlPrivate::Normalized | QUrlPrivate::HostCanonicalized); d->setAuthority(authority); } |