From 0c247b1d5f7b8f8e5b0d5bd7cd09239334877b30 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Mon, 3 Apr 2006 14:12:04 +0000 Subject: [PATCH] Make the Windows registry code a little more robust. --- .../cdt/core/winreg/tests/WinRegTests.java | 12 +++++++ .../library/winreg.cpp | 31 +++--------------- .../os/win32/x86/winreg.dll | Bin 49152 -> 49152 bytes .../eclipse/cdt/utils/WindowsRegistry.java | 8 +++++ 4 files changed, 24 insertions(+), 27 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/winreg/tests/WinRegTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/winreg/tests/WinRegTests.java index 5bef66d737f..c2aa8c5fd80 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/winreg/tests/WinRegTests.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/winreg/tests/WinRegTests.java @@ -20,4 +20,16 @@ public class WinRegTests extends TestCase { } } + public void test2() { + WindowsRegistry registry = WindowsRegistry.getRegistry(); + if (Platform.getOS().equals(Platform.OS_WIN32)) { + assertNotNull(registry); + String value = registry.getLocalMachineValue("SOFTWARE\\Microsoft\\Windows\\CurrentVersion", "Nothing"); + // Not sure how you set this to anything else so it seems safe. + assertNull(value); + } else { + // Should be null on non-Windows platforms + assertNotNull(registry); + } + } } diff --git a/core/org.eclipse.cdt.core.win32/library/winreg.cpp b/core/org.eclipse.cdt.core.win32/library/winreg.cpp index 3f892b95fa7..8b0562ae7f1 100644 --- a/core/org.eclipse.cdt.core.win32/library/winreg.cpp +++ b/core/org.eclipse.cdt.core.win32/library/winreg.cpp @@ -2,48 +2,25 @@ #include #include -jstring getErrorMsg(JNIEnv * env, wchar_t * name) { - wchar_t msg[256]; - wchar_t * msgBuff; - DWORD err = GetLastError(); - - FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - err, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &msgBuff, - 0, NULL ); - - wsprintf(msg, L"%s failed with error %d: %s", name, err, msgBuff); - - LocalFree(msgBuff); - - return env->NewString((jchar *)msg, wcslen(msg)); -} - extern "C" JNIEXPORT jstring Java_org_eclipse_cdt_utils_WindowsRegistry_getLocalMachineValue( JNIEnv * env, jobject obj, jstring subkey, jstring name) { const jchar * csubkey = env->GetStringChars(subkey, NULL); const jchar * cname = env->GetStringChars(name, NULL); - jstring result; + jstring result = NULL; HKEY key; LONG rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, (const wchar_t *)csubkey, 0, KEY_READ, &key); - if (rc != ERROR_SUCCESS) { - result = getErrorMsg(env, L"RegOpenKeyEx"); - } else { + if (rc == ERROR_SUCCESS) { DWORD type; wchar_t buffer[256]; DWORD len = sizeof(buffer); rc = RegQueryValueEx(key, (const wchar_t *)cname, NULL, &type, (BYTE *)&buffer, &len); - if (rc != ERROR_SUCCESS) { - result = getErrorMsg(env, L"RegQueryValueEx"); - } else { + if (rc == ERROR_SUCCESS) { result = env->NewString((jchar *)buffer, wcslen(buffer)); } + RegCloseKey(key); } env->ReleaseStringChars(subkey, csubkey); diff --git a/core/org.eclipse.cdt.core.win32/os/win32/x86/winreg.dll b/core/org.eclipse.cdt.core.win32/os/win32/x86/winreg.dll index 2c113d73d3f882fc72de3de41122f3e9f07e0801..5290964e77db8a98aae0c27194995bac1afd27c7 100644 GIT binary patch delta 5900 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