diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 1b4346a4e..d36d10985 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +Thu Jun 22 20:45:00 2000 Corinna Vinschen + + * registry.cc (load_registry_hive): Use HKEY_USERS when checking + for existing user hive. + Use MAX_PATH instead of numerical constant for array size. + Use return code of RegLoadKeyA instead of GetLastError for error output. + Thu Jun 22 14:27:04 2000 Christopher Faylor * Makefile.in: Add new-libcygwin.a back to all_host target. diff --git a/winsup/cygwin/registry.cc b/winsup/cygwin/registry.cc index 31ee183da..e4439663b 100644 --- a/winsup/cygwin/registry.cc +++ b/winsup/cygwin/registry.cc @@ -210,13 +210,14 @@ void load_registry_hive (PSID psid) { char sid[256]; - char path[256]; + char path[MAX_PATH + 1]; HKEY hkey; + LONG ret; if (!psid) return; - /* Check if user hive already exists */ - if (!RegOpenKeyExA (HKEY_LOCAL_MACHINE, convert_sid_to_string_sid (psid, sid), + /* Check if user hive is already loaded. */ + if (!RegOpenKeyExA (HKEY_USERS, convert_sid_to_string_sid (psid, sid), 0, KEY_READ, &hkey)) { debug_printf ("User registry hive for %s already exists", sid); @@ -226,8 +227,8 @@ load_registry_hive (PSID psid) if (get_registry_hive_path (psid, path)) { strcat (path, "\\NTUSER.DAT"); - if (RegLoadKeyA (HKEY_USERS, sid, path)) - debug_printf ("Loading user registry hive for %s failed: %E", sid); + if ((ret = RegLoadKeyA (HKEY_USERS, sid, path)) != ERROR_SUCCESS) + debug_printf ("Loading user registry hive for %s failed: %d", sid, ret); } }