From efaa4aa2a1452cf73bc3117c49d1345a4106fd57 Mon Sep 17 00:00:00 2001 From: Adam Sowa Date: Thu, 31 Oct 2019 08:52:26 +0100 Subject: [PATCH] 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 --- src/corelib/io/qfile.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/corelib/io/qfile.h b/src/corelib/io/qfile.h index cf1465ec70..2099b2852f 100644 --- a/src/corelib/io/qfile.h +++ b/src/corelib/io/qfile.h @@ -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);