QUrlIdna: port qt_ACE_do() to QStringView
Change-Id: I29abc17576ceb72dd678e3ca59456e6220acd0a6 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
2e69375616
commit
13bea13792
@ -64,7 +64,7 @@ extern Q_AUTOTEST_EXPORT int qt_urlRecode(QString &appendTo, const QChar *begin,
|
||||
// in qurlidna.cpp
|
||||
enum AceLeadingDot { AllowLeadingDot, ForbidLeadingDot };
|
||||
enum AceOperation { ToAceOnly, NormalizeAce };
|
||||
extern QString qt_ACE_do(const QString &domain, AceOperation op, AceLeadingDot dot);
|
||||
extern QString qt_ACE_do(QStringView domain, AceOperation op, AceLeadingDot dot);
|
||||
extern Q_AUTOTEST_EXPORT bool qt_nameprep(QString *source, int from);
|
||||
extern Q_AUTOTEST_EXPORT bool qt_check_std3rules(const QChar *uc, int len);
|
||||
extern Q_AUTOTEST_EXPORT void qt_punycodeEncoder(const QChar *s, int ucLength, QString *output);
|
||||
|
@ -2485,7 +2485,7 @@ static qsizetype nextDotDelimiter(QStringView domain, qsizetype from = 0)
|
||||
return ch - b;
|
||||
}
|
||||
|
||||
QString qt_ACE_do(const QString &domain, AceOperation op, AceLeadingDot dot)
|
||||
QString qt_ACE_do(QStringView domain, AceOperation op, AceLeadingDot dot)
|
||||
{
|
||||
QString result;
|
||||
if (domain.isEmpty())
|
||||
@ -2501,7 +2501,7 @@ QString qt_ACE_do(const QString &domain, AceOperation op, AceLeadingDot dot)
|
||||
const auto idx = nextDotDelimiter(domain, lastIdx);
|
||||
const auto labelLength = idx - lastIdx;
|
||||
if (labelLength == 0) {
|
||||
if (idx == domain.length())
|
||||
if (idx == domain.size())
|
||||
break;
|
||||
if (dot == ForbidLeadingDot || idx > 0)
|
||||
return QString(); // two delimiters in a row -- empty label not allowed
|
||||
@ -2526,7 +2526,7 @@ QString qt_ACE_do(const QString &domain, AceOperation op, AceLeadingDot dot)
|
||||
result.resize(prevLen + labelLength);
|
||||
{
|
||||
QChar *out = result.data() + prevLen;
|
||||
const QChar *in = domain.constData() + lastIdx;
|
||||
const QChar *in = domain.data() + lastIdx;
|
||||
const QChar *e = in + labelLength;
|
||||
for (; in < e; ++in, ++out) {
|
||||
ushort uc = in->unicode();
|
||||
|
Loading…
x
Reference in New Issue
Block a user