QUrl stringprep: fix handling of U+0080: it's prohibited

Edge case: a > that should have been >=. Without it, we never ran the
rest of the IDN nameprepping.

Change-Id: I2276d660de3a70d0c561bb18816820d9a0f47e77
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
This commit is contained in:
Thiago Macieira 2013-06-07 19:20:32 -07:00 committed by The Qt Project
parent 53388cd8e0
commit 4d93393a6d
2 changed files with 6 additions and 1 deletions

View File

@ -2029,7 +2029,7 @@ Q_AUTOTEST_EXPORT void qt_nameprep(QString *source, int from)
for ( ; out < e; ++out) {
register ushort uc = out->unicode();
if (uc > 0x80) {
if (uc >= 0x80) {
break;
} else if (uc >= 'A' && uc <= 'Z') {
*out = QChar(uc | 0x20);

View File

@ -375,6 +375,11 @@ void tst_QUrlInternal::nameprep_testsuite_data()
<< QString::fromUtf8("\x10\x7F")
<< QString() << 0 << 0;
QTest::newRow("Non-ASCII 8bit control character U+0080")
<< QString::fromUtf8("x\xC2\x80x")
<< QString()
<< QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
QTest::newRow("Non-ASCII 8bit control character U+0085")
<< QString::fromUtf8("x\xC2\x85x")
<< QString()