QFile::decodeName(const char *): don't construct QByteArray but use the argument directly

Use QString::fromLocal8Bit(const QByteArray &str) instead of constructing QByteArray to avoid memory allocation and strcpy.

Change-Id: I32bbb47fbc45681c621adaebe8f8574d8f8ad6bf
Fixes: QTBUG-79644
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
bb10
Adam Sowa 2019-10-31 08:52:26 +01:00
parent 312ff6f83b
commit efaa4aa2a1
1 changed files with 8 additions and 2 deletions

View File

@ -84,6 +84,10 @@ public:
// note: duplicated in qglobal.cpp (qEnvironmentVariable)
return QString::fromUtf8(localFileName).normalized(QString::NormalizationForm_C);
}
static inline QString decodeName(const char *localFileName)
{
return QString::fromUtf8(localFileName).normalized(QString::NormalizationForm_C);
}
#else
static inline QByteArray encodeName(const QString &fileName)
{
@ -93,9 +97,11 @@ public:
{
return QString::fromLocal8Bit(localFileName);
}
static inline QString decodeName(const char *localFileName)
{
return QString::fromLocal8Bit(localFileName);
}
#endif
inline static QString decodeName(const char *localFileName)
{ return decodeName(QByteArray(localFileName)); }
#if QT_DEPRECATED_SINCE(5,0)
typedef QByteArray (*EncoderFn)(const QString &fileName);