diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2020-11-05 17:11:46 +0100 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2020-11-06 10:16:32 +0100 |
commit | c9b8c2cddbd41c0c80bf46ad587ebb9a342255da (patch) | |
tree | ff5ccdfa514c197461f5273cfcd653e966c9abb5 /tests/auto/widgets | |
parent | aa6ad154243b514cd55b10af64b72f4fa3d1cd02 (diff) |
QLineEdit: check a int->QChar conversion, and make it explicit
QStyle::styleHint returns int, and that int was simply used to
build a QChar representing the "password mask" character.
Enforce that it actually fits and then do an explicit cast.
(In general, of course, this is an API flaw; styleHint should
somehow return a QString for this use case).
Change-Id: Ifb6181b229b91cc84859cb9b9d57e21d6748c31a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r-- | tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index e4bf36efaa..6df217d801 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -1679,7 +1679,9 @@ void tst_QLineEdit::displayText_data() m << bool(use_setText); s = key_mode_str + "Password"; m = QLineEdit::Password; - QChar passChar = qApp->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, 0, m_testWidget); + const int passwordCharacter = qApp->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, 0, m_testWidget); + QVERIFY(passwordCharacter <= 0xFFFF); + const QChar passChar(passwordCharacter); QString input; QString pass; input = "Hello World"; @@ -1725,7 +1727,9 @@ void tst_QLineEdit::passwordEchoOnEdit() QStyleOptionFrame opt; QLineEdit *testWidget = ensureTestWidget(); - QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget); + const int passwordCharacter = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget); + QVERIFY(passwordCharacter <= 0xFFFF); + const QChar fillChar(passwordCharacter); testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit); testWidget->setFocus(); @@ -1772,7 +1776,9 @@ void tst_QLineEdit::passwordEchoDelay() QSKIP("Platform not defining echo delay and overriding only possible in internal build"); QStyleOptionFrame opt; - QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget); + const int passwordCharacter = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget); + QVERIFY(passwordCharacter <= 0xFFFF); + const QChar fillChar(passwordCharacter); testWidget->setEchoMode(QLineEdit::Password); testWidget->setFocus(); @@ -3917,7 +3923,9 @@ void tst_QLineEdit::task241436_passwordEchoOnEditRestoreEchoMode() QStyleOptionFrame opt; QLineEdit *testWidget = ensureTestWidget(); - QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget); + const int passwordCharacter = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget); + QVERIFY(passwordCharacter <= 0xFFFF); + const QChar fillChar(passwordCharacter); testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit); testWidget->setFocus(); |