From c0bf267baeb14f86e5391f712f578b81c9cad383 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Mon, 11 Jul 2022 18:51:32 +0200 Subject: [PATCH 1/3] fix: fix unicode issue with JavaChecker on Windows Signed-off-by: Sefa Eyeoglu --- launcher/java/JavaUtils.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index c2b776ae..5223256c 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -202,12 +202,12 @@ QList JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString { // Read the current type version from the registry. // This will be used to find any key that contains the JavaHome value. - char *value = new char[0]; + TCHAR *value = new TCHAR[0]; DWORD valueSz = 0; if (RegQueryValueExW(jreKey, L"CurrentVersion", NULL, NULL, (BYTE *)value, &valueSz) == ERROR_MORE_DATA) { - value = new char[valueSz]; + value = new TCHAR[valueSz]; RegQueryValueExW(jreKey, L"CurrentVersion", NULL, NULL, (BYTE *)value, &valueSz); } @@ -237,22 +237,24 @@ QList JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString KEY_READ | KEY_WOW64_64KEY, &newKey) == ERROR_SUCCESS) { // Read the JavaHome value to find where Java is installed. - value = new char[0]; + value = new TCHAR[0]; valueSz = 0; if (RegQueryValueExW(newKey, keyJavaDir.toStdWString().c_str(), NULL, NULL, (BYTE *)value, &valueSz) == ERROR_MORE_DATA) { - value = new char[valueSz]; + value = new TCHAR[valueSz]; RegQueryValueExW(newKey, keyJavaDir.toStdWString().c_str(), NULL, NULL, (BYTE *)value, &valueSz); + QString newValue = QString::fromWCharArray(value); + // Now, we construct the version object and add it to the list. JavaInstallPtr javaVersion(new JavaInstall()); javaVersion->id = newSubkeyName; javaVersion->arch = archType; javaVersion->path = - QDir(FS::PathCombine(value, "bin")).absoluteFilePath("javaw.exe"); + QDir(FS::PathCombine(newValue, "bin")).absoluteFilePath("javaw.exe"); javas.append(javaVersion); } From a4672ba00ff03620bcbd9d43ee924cb6a81c79b4 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Mon, 11 Jul 2022 19:09:09 +0200 Subject: [PATCH 2/3] fix: remove unnecessary code for Windows Signed-off-by: Sefa Eyeoglu --- launcher/java/JavaUtils.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index 5223256c..48add99e 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -204,12 +204,6 @@ QList JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString // This will be used to find any key that contains the JavaHome value. TCHAR *value = new TCHAR[0]; DWORD valueSz = 0; - if (RegQueryValueExW(jreKey, L"CurrentVersion", NULL, NULL, (BYTE *)value, &valueSz) == - ERROR_MORE_DATA) - { - value = new TCHAR[valueSz]; - RegQueryValueExW(jreKey, L"CurrentVersion", NULL, NULL, (BYTE *)value, &valueSz); - } TCHAR subKeyName[255]; DWORD subKeyNameSize, numSubKeys, retCode; @@ -237,6 +231,7 @@ QList JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString KEY_READ | KEY_WOW64_64KEY, &newKey) == ERROR_SUCCESS) { // Read the JavaHome value to find where Java is installed. + delete [] value; value = new TCHAR[0]; valueSz = 0; if (RegQueryValueExW(newKey, keyJavaDir.toStdWString().c_str(), NULL, NULL, (BYTE *)value, From 17ea51ce276a1ad639fb7f62724230de25983d4c Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Sat, 16 Jul 2022 20:08:02 +0200 Subject: [PATCH 3/3] fix: fix memory leak on Windows Signed-off-by: Sefa Eyeoglu --- launcher/java/JavaUtils.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index 48add99e..749c9c88 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -202,8 +202,6 @@ QList JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString { // Read the current type version from the registry. // This will be used to find any key that contains the JavaHome value. - TCHAR *value = new TCHAR[0]; - DWORD valueSz = 0; TCHAR subKeyName[255]; DWORD subKeyNameSize, numSubKeys, retCode; @@ -231,9 +229,8 @@ QList JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString KEY_READ | KEY_WOW64_64KEY, &newKey) == ERROR_SUCCESS) { // Read the JavaHome value to find where Java is installed. - delete [] value; - value = new TCHAR[0]; - valueSz = 0; + TCHAR *value = NULL; + DWORD valueSz = 0; if (RegQueryValueExW(newKey, keyJavaDir.toStdWString().c_str(), NULL, NULL, (BYTE *)value, &valueSz) == ERROR_MORE_DATA) { @@ -242,6 +239,7 @@ QList JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString &valueSz); QString newValue = QString::fromWCharArray(value); + delete [] value; // Now, we construct the version object and add it to the list. JavaInstallPtr javaVersion(new JavaInstall());