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





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)
@@ -51,6 +51,9 @@
 #  include <unistd.h>
 #endif
 
+#ifdef __CYGWIN__
+#include <wchar.h>
+#endif
 
 char Fl_Preferences::nameBuffer[128];
 
@@ -850,19 +853,17 @@
   }
 
 
-#ifndef __CYGWIN__
-    if (!filename[1] && !filename[0]) {
+  if (!filename[1] && !filename[0]) {
     strcpy(filename, "C:\\FLTK");
-    } else {
-      xchar *b = (xchar*)_wcsdup((xchar*)filename);
-//    filename[fl_unicode2utf(b, wcslen((xchar*)b), filename)] = 0;
-      unsigned len = fl_utf8fromwc(filename, (FL_PATH_MAX-1), b, 
wcslen((xchar*)b));
-      filename[len] = 0;
-      free(b);
+  } else {
+    // cygwin does not come with _wcsdup. Use malloc +  wcscpy.
+    xchar *b = (xchar*) malloc((wcslen((xchar *) filename) + 1) * 
sizeof(xchar));
+    wcscpy(b, (xchar *) filename);
+//  filename[fl_unicode2utf(b, wcslen((xchar*)b), filename)] = 0;
+    unsigned len = fl_utf8fromwc(filename, (FL_PATH_MAX-1), b, 
wcslen((xchar*)b));
+    filename[len] = 0;
+    free(b);
   }
-#else
-  if (!filename[0]) strcpy(filename, "C:\\FLTK");
-#endif
   snprintf(filename + strlen(filename), sizeof(filename) - strlen(filename),
            "/%s/%s.prefs", vendor, application);
   for (char *s = filename; *s; s++) if (*s == '\\') *s = '/';
_______________________________________________
fltk-bugs mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-bugs

Reply via email to