From d3c8757731d0b0d9e7a6448f1d1c21997136a19d Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Thu, 23 Jul 2020 13:50:34 +0200 Subject: Purge redundant recoding of URL fragments from QByteArray QUrl::fromEncodedComponent_helper() only existed to support some old methods deprecated since 5.0, that I recently removed. It was the only caller of qt_urlRecodeByteArray() aside from that function's own autotest. Both were private. Task-number: QTBUG-85700 Change-Id: I5d09fd44e768847ce51a1ae7043150922cb5314c Reviewed-by: Thiago Macieira Reviewed-by: Timur Pocheptsov --- src/corelib/io/qurlrecode.cpp | 48 ------------------------------------------- 1 file changed, 48 deletions(-) (limited to 'src/corelib/io/qurlrecode.cpp') diff --git a/src/corelib/io/qurlrecode.cpp b/src/corelib/io/qurlrecode.cpp index ad23588978..2ac335cf5c 100644 --- a/src/corelib/io/qurlrecode.cpp +++ b/src/corelib/io/qurlrecode.cpp @@ -695,52 +695,4 @@ qt_urlRecode(QString &appendTo, QStringView in, encoding, actionTable, false); } -// qstring.cpp -bool qt_is_ascii(const char *&ptr, const char *end) noexcept; - -/*! - \internal - \since 5.0 - - \a ba contains an 8-bit form of the component and it might be - percent-encoded already. We can't use QString::fromUtf8 because it might - contain non-UTF8 sequences. We can't use QByteArray::toPercentEncoding - because it might already contain percent-encoded sequences. We can't use - qt_urlRecode because it needs UTF-16 input. -*/ -Q_AUTOTEST_EXPORT -QString qt_urlRecodeByteArray(const QByteArray &ba) -{ - if (ba.isNull()) - return QString(); - - // scan ba for anything above or equal to 0x80 - // control points below 0x20 are fine in QString - const char *in = ba.constData(); - const char *const end = ba.constEnd(); - if (qt_is_ascii(in, end)) { - // no non-ASCII found, we're safe to convert to QString - return QString::fromLatin1(ba, ba.size()); - } - - // we found something that we need to encode - QByteArray intermediate = ba; - intermediate.resize(ba.size() * 3 - (in - ba.constData())); - uchar *out = reinterpret_cast(intermediate.data() + (in - ba.constData())); - for ( ; in < end; ++in) { - if (*in & 0x80) { - // encode - *out++ = '%'; - *out++ = encodeNibble(uchar(*in) >> 4); - *out++ = encodeNibble(uchar(*in) & 0xf); - } else { - // keep - *out++ = uchar(*in); - } - } - - // now it's safe to call fromLatin1 - return QString::fromLatin1(intermediate, out - reinterpret_cast(intermediate.data())); -} - QT_END_NAMESPACE -- cgit v1.2.3