From: Pino Toscano Date: Thu, 10 Feb 2022 07:26:11 +0000 (+0100) Subject: [PATCH] Avoid a stack buffer when not needed X-Git-Tag: archive/raspbian/6.3.1+dfsg-9+rpi1~1^2~4 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b7db8f03cfddd2a9c42a3b58a9732fd102005c2b;p=qt6-base.git [PATCH] Avoid a stack buffer when not needed Allocate a PATH_MAX-sized buffer on stack only in case we are not using realpath(X, null), i.e. on platforms with older POSIX versions, macOS, or Android. This fixes the build on platforms that do not have PATH_MAX (e.g. GNU/Hurd), and it provides a minor optimization on realpath(X, null) platforms. Change-Id: Icd92a1b15ec18c5eef8113408e9610dfac774101 Reviewed-by: Thiago Macieira Gbp-Pq: Name upstream_Avoid-a-stack-buffer-when-not-needed.patch --- diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index efb42fa7..966a9470 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -686,7 +686,9 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry, Q_UNUSED(data); return QFileSystemEntry(slowCanonicalized(absoluteName(entry).filePath())); #else +# if defined(Q_OS_DARWIN) || defined(Q_OS_ANDROID) || _POSIX_VERSION < 200801L char stack_result[PATH_MAX+1]; +# endif char *resolved_name = nullptr; # if defined(Q_OS_DARWIN) || defined(Q_OS_ANDROID) // On some Android and macOS versions, realpath() will return a path even if @@ -714,8 +716,10 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry, data.knownFlagsMask |= QFileSystemMetaData::ExistsAttribute; data.entryFlags |= QFileSystemMetaData::ExistsAttribute; QString canonicalPath = QDir::cleanPath(QFile::decodeName(resolved_name)); +# if defined(Q_OS_DARWIN) || defined(Q_OS_ANDROID) || _POSIX_VERSION < 200801L if (resolved_name != stack_result) free(resolved_name); +# endif return QFileSystemEntry(canonicalPath); } else if (errno == ENOENT || errno == ENOTDIR) { // file doesn't exist data.knownFlagsMask |= QFileSystemMetaData::ExistsAttribute;