]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Fix the Windows preferences support
authorDirk Hohndel <dirk@hohndel.org>
Sat, 26 Nov 2011 03:48:53 +0000 (19:48 -0800)
committerDirk Hohndel <dirk@hohndel.org>
Sat, 26 Nov 2011 03:48:53 +0000 (19:48 -0800)
Now that I can test Windows binaries again, the bugs were rather easy to
spot. Because of the different flow of the opening, writing and closing of
the registry key my first attempt got things wrong - we simply always
create the key with all access rights; if it exists Windows will just open
it for us. The second bug was a cut'n'paste error.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
windows.c

index 91323ebe8cd801759b10bd0fbb2eab5b0465dd10..b8eafb6de9338ea7228bae4e99b400a940676319 100644 (file)
--- a/windows.c
+++ b/windows.c
@@ -22,15 +22,11 @@ void subsurface_open_conf(void)
 {
        LONG success;
 
-       success = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"), 0,
-                       KEY_QUERY_VALUE, &hkey);
-       if (success != ERROR_SUCCESS) {
-               success = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"),
-                                       0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
-                                       NULL, &hkey, NULL);
-               if (success != ERROR_SUCCESS)
-                       printf("CreateKey Software\\subsurface failed %ld\n", success);
-       }
+       success = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"),
+                               0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
+                               NULL, &hkey, NULL);
+       if (success != ERROR_SUCCESS)
+               printf("CreateKey Software\\subsurface failed %ld\n", success);
 }
 
 void subsurface_set_conf(char *name, pref_type_t type, const void *value)
@@ -38,7 +34,7 @@ void subsurface_set_conf(char *name, pref_type_t type, const void *value)
        switch (type) {
        case PREF_BOOL:
                /* we simply store the value as DWORD */
-               RegSetValueEx(hkey, TEXT(name), 0, REG_DWORD, value, 4);
+               RegSetValueEx(hkey, TEXT(name), 0, REG_DWORD, &value, 4);
                break;
        case PREF_STRING:
                RegSetValueEx(hkey, TEXT(name), 0, REG_SZ, value, strlen(value));