2018-10-16 Fred Gleason <fredg@paravelsystems.com>

* Fixed a bug in the 'RDIdValidator' and 'RDTextValidator' classes
	that caused them to throw exceptions when processing certain
	multi-byte UTF-8 characters.
This commit is contained in:
Fred Gleason
2018-10-16 20:49:40 -04:00
parent 9bfc6d6a8f
commit 3aac166983
10 changed files with 97 additions and 34 deletions

View File

@@ -33,9 +33,11 @@ RDIdValidator::RDIdValidator(QObject *parent)
QValidator::State RDIdValidator::validate(QString &input,int &pos) const
{
char c=input.at(pos-1).latin1();
if(input.length()==0) {
return QValidator::Acceptable;
}
for(unsigned i=0;i<banned_chars.size();i++) {
if(banned_chars[i]==c) {
if(input.contains(banned_chars.at(i))) {
return QValidator::Invalid;
}
}

View File

@@ -37,10 +37,8 @@ QValidator::State RDTextValidator::validate(QString &input,int &pos) const
if(input.length()==0) {
return QValidator::Acceptable;
}
int inspection_pos=std::max(0,std::min((int)input.length()-1,pos));
char c=input.at(inspection_pos).latin1();
for(unsigned i=0;i<banned_chars.size();i++) {
if(banned_chars[i]==c) {
if(input.contains(banned_chars.at(i))) {
return QValidator::Invalid;
}
}