From 1c0f83cd90dac9c384099f7ffd311d03e880bcf4 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 6 Mar 2019 09:18:32 +0100 Subject: Utils: fix memory leak in normalizePathName on windows The PIDLIST_ABSOLUTE item returned by SHParseDisplayName has to be freed again by ILFree according to the documentation of ITEMIDLIST structure. Change-Id: I29eb7576600287cdc8380e81a83ce2af79e13e33 Reviewed-by: Oliver Wolff --- src/libs/utils/fileutils.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/libs/utils') diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 708595aa4d..a476cd8d89 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -311,9 +311,10 @@ QString FileUtils::normalizePathName(const QString &name) if (FAILED(hr)) return name; TCHAR buffer[MAX_PATH]; - if (!SHGetPathFromIDList(file, buffer)) - return name; - return QDir::fromNativeSeparators(QString::fromUtf16(reinterpret_cast(buffer))); + const bool success = SHGetPathFromIDList(file, buffer); + ILFree(file); + return success ? QDir::fromNativeSeparators(QString::fromUtf16(reinterpret_cast(buffer))) + : name; #elif defined(Q_OS_OSX) return Internal::normalizePathName(name); #else // do not try to handle case-insensitive file systems on Linux -- cgit v1.2.3