From b8aafae68826c91a96b5913cd1e14a0943664221 Mon Sep 17 00:00:00 2001 From: kh1 Date: Tue, 12 Mar 2013 11:35:12 +0100 Subject: Check for emtpy string before calling the windows function. Change-Id: Icbeab47fe4dff0411adeed310914761d117609ba Reviewed-by: Niels Weber Reviewed-by: Tim Jenssen --- src/libs/installer/packagemanagercore.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 63f4eb45a..5b75aa0fb 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -1259,12 +1259,13 @@ bool PackageManagerCore::executeDetached(const QString &program, const QStringLi */ QString PackageManagerCore::environmentVariable(const QString &name) const { + if (name.isEmpty()) + return QString(); + #ifdef Q_OS_WIN - const LPCWSTR n = (LPCWSTR) name.utf16(); - LPTSTR buff = (LPTSTR) malloc(4096 * sizeof(TCHAR)); - DWORD getenvret = GetEnvironmentVariable(n, buff, 4096); - QString value = getenvret != 0 ? QString::fromUtf16((const unsigned short *) buff) : QString(); - free(buff); + static TCHAR buffer[32767]; + DWORD size = GetEnvironmentVariable(LPCWSTR(name.utf16()), buffer, 32767); + QString value = QString::fromUtf16((const unsigned short *) buffer, size); if (value.isEmpty()) { static QLatin1String userEnvironmentRegistryPath("HKEY_CURRENT_USER\\Environment"); @@ -1277,8 +1278,6 @@ QString PackageManagerCore::environmentVariable(const QString &name) const } return value; #else - if (name.isEmpty()) - return QString(); return QString::fromUtf8(qgetenv(name.toLatin1())); #endif } -- cgit v1.2.3