diff options
author | kh1 <karsten.heimrich@digia.com> | 2013-03-12 11:35:12 +0100 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2013-03-12 16:43:23 +0100 |
commit | b8aafae68826c91a96b5913cd1e14a0943664221 (patch) | |
tree | 5e4daa9ecefaf6403a34244c29fc9df666e7a375 /src/libs/installer/packagemanagercore.cpp | |
parent | de8d24fa6ccca3b201a8468d90631af7124c9c3c (diff) |
Check for emtpy string before calling the windows function.
Change-Id: Icbeab47fe4dff0411adeed310914761d117609ba
Reviewed-by: Niels Weber <niels.weber@digia.com>
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Diffstat (limited to 'src/libs/installer/packagemanagercore.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 13 |
1 files 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 } |