SCO ACS part 2 (ESC[12m) apparently puts the top half of CP437 into
[u/mdw/putty] / winstore.c
index 651fbad..bc7bb5b 100644 (file)
@@ -181,7 +181,7 @@ void *enum_settings_start(void)
     struct enumsettings *ret;
     HKEY key;
 
-    if (RegCreateKey(HKEY_CURRENT_USER, puttystr, &key) != ERROR_SUCCESS)
+    if (RegOpenKey(HKEY_CURRENT_USER, puttystr, &key) != ERROR_SUCCESS)
        return NULL;
 
     ret = smalloc(sizeof(*ret));
@@ -198,14 +198,14 @@ char *enum_settings_next(void *handle, char *buffer, int buflen)
     struct enumsettings *e = (struct enumsettings *) handle;
     char *otherbuf;
     otherbuf = smalloc(3 * buflen);
-    if (otherbuf && RegEnumKey(e->key, e->i++, otherbuf,
-                              3 * buflen) == ERROR_SUCCESS) {
+    if (RegEnumKey(e->key, e->i++, otherbuf, 3 * buflen) == ERROR_SUCCESS) {
        unmungestr(otherbuf, buffer, buflen);
        sfree(otherbuf);
        return buffer;
-    } else
+    } else {
+       sfree(otherbuf);
        return NULL;
-
+    }
 }
 
 void enum_settings_finish(void *handle)
@@ -246,8 +246,8 @@ int verify_host_key(char *hostname, int port, char *keytype, char *key)
 
     hostkey_regname(regname, hostname, port, keytype);
 
-    if (RegCreateKey(HKEY_CURRENT_USER, PUTTY_REG_POS "\\SshHostKeys",
-                    &rkey) != ERROR_SUCCESS)
+    if (RegOpenKey(HKEY_CURRENT_USER, PUTTY_REG_POS "\\SshHostKeys",
+                  &rkey) != ERROR_SUCCESS)
        return 1;                      /* key does not exist in registry */
 
     readlen = len;