DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR New]

Link: http://www.fltk.org/str.php?L2164
Version: 1.3-current


Fl_Preferences is broken for svn fltk-1.3 for cygwin,
it works for svn fltk-1.1.

In Fl_Preferences::RootNode::RootNode,
there is the following code for mingw

#ifndef __CYGWIN__
    if (!filename[1] && !filename[0]) {
    strcpy(filename, "C:\\FLTK");

For cygwin there is:

    if (!filename[0]) strcpy(filename, "C:\\FLTK");

The mingw code works on wide characters, the cygwin
code on 1 byte chars. Since filename is a wide character
string the cygwin test is incorrect, and filename
is always set to c:\\fltk.

The attached patch fixes this


Link: http://www.fltk.org/str.php?L2164
Version: 1.3-current
Index: Fl_Preferences.cxx
===================================================================
--- Fl_Preferences.cxx  (revision 6670)
+++ Fl_Preferences.cxx  (working copy)
@@ -816,13 +816,22 @@
   switch (root) {
     case SYSTEM:
 
+#ifndef __CYGWIN__
         err = RegOpenKeyW( HKEY_LOCAL_MACHINE, FLPREFS_RESOURCEW, &key );
+#else
+        err = RegOpenKey( HKEY_LOCAL_MACHINE, FLPREFS_RESOURCE, &key );
+#endif
 
       if (err == ERROR_SUCCESS) {
        nn = FL_PATH_MAX - appDataLen;
 
+#ifndef __CYGWIN__
                err = RegQueryValueExW( key, L"Common AppData", 0L, &type,
                                         (BYTE*)filename, &nn );
+#else
+               err = RegQueryValueEx( key, "Common AppData", 0L, &type,
+                                        (BYTE*)filename, &nn );
+#endif
 
                if ( ( err != ERROR_SUCCESS ) && ( type == REG_SZ ) ) {
          filename[0] = 0;
@@ -832,13 +841,22 @@
       }
       break;
     case USER:
+#ifndef __CYGWIN__
         err = RegOpenKeyW( HKEY_CURRENT_USER, FLPREFS_RESOURCEW, &key );
+#else
+        err = RegOpenKey( HKEY_CURRENT_USER, FLPREFS_RESOURCE, &key );
+#endif
 
 
       if (err == ERROR_SUCCESS) {
        nn = FL_PATH_MAX - appDataLen;
+#ifndef __CYGWIN__
           err = RegQueryValueExW( key, L"AppData", 0L, &type,
                                  (BYTE*)filename, &nn );
+#else
+          err = RegQueryValueEx( key, "AppData", 0L, &type,
+                                 (BYTE*)filename, &nn );
+#endif
 
         if ( ( err != ERROR_SUCCESS ) && ( type == REG_SZ ) ) {
            filename[0] = 0;
_______________________________________________
fltk-bugs mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-bugs

Reply via email to