Opened 19 years ago
Closed 19 years ago
#31 closed defect (fixed)
qfile_pm.cpp: isValidFile() doesn't work correctly for filenames with national characters
| Reported by: | froloff | Owned by: | dmik |
|---|---|---|---|
| Priority: | normal | Milestone: | qt-os2-3.3.1-rc07 |
| Component: | tools | Version: | 3.3.1-rc06 |
| Severity: | minor | Keywords: | QFile national characters |
| Cc: |
Description (last modified by )
Мелочь, поэтому напишу по русски :) . bool isValidFile( const QString& fileName ) использует strchr() для проверки символа в имени файла на if ( strchr( badChars, fileName[i] ) ) Перед этим для приведения fileName[i] к char неявно вызывается метод latin1(), который для символов в уникоде (>0xFF) возвращает 0. Но согласно спецификации strchr() 0 это допустимы символ для поиска и более того конец строки '\0' также включается в поиск. В результате имеем FALSE для всех имён с национальными символами. Вот исправление:
for ( int i = 0; i < (int) fileName.length(); i++) {
if ( fileName[i] < QChar( 32 ) )
return FALSE;
'''if( (char)fileName[i] == 0 ) continue;'''
if ( strchr( badChars, fileName[i] ) )
return FALSE;
}
Или можно заменить strchr() strnchr()
Change History (3)
comment:1 by , 19 years ago
| Description: | modified (diff) |
|---|---|
| Keywords: | QFile national characters added |
| Milestone: | → qt-os2-3.3.1-rc07 |
| Status: | new → assigned |
| Summary: | qfile_pm.cpp minor change → QFile::isValidFile() doesn't work correctly for filenames with national characters |
| Version: | → 3.3.1-rc06 |
comment:2 by , 19 years ago
| Summary: | QFile::isValidFile() doesn't work correctly for filenames with national characters → qfile_pm.cpp: isValidFile() doesn't work correctly for filenames with national characters |
|---|
comment:3 by , 19 years ago
| Component: | kernel → tools |
|---|---|
| Resolution: | → fixed |
| Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.

Fixed by r127. Thanks for reporting.