diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2006-04-20 04:34:18 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2006-04-20 04:34:18 +0000 |
| commit | 0b98e816d858a5bc49b0596293760c5237f58e8d (patch) | |
| tree | 8ffca9ff2b6de8bc6308444efaf2e910e1406c3a | |
| parent | a82e7879ceb7eb6e261ca46b0d797d7808a8afce (diff) | |
Fixed crash in Fl_Preferences if 2nd or 3rd argument in the 'path' constructor were NULL
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5007 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
| -rw-r--r-- | CHANGES | 5 | ||||
| -rw-r--r-- | documentation/Fl_Preferences.html | 20 | ||||
| -rw-r--r-- | src/Fl_Preferences.cxx | 15 |
3 files changed, 25 insertions, 15 deletions
@@ -1,9 +1,6 @@ -CHANGES IN FLTK 1.1.9 - - - caret key lookup was missing for OS X - CHANGES IN FLTK 1.1.8 + - caret key lookup was missing for OS X - FLUID didn't handle loading .fl files with international characters properly with all compilers (STR #1150) diff --git a/documentation/Fl_Preferences.html b/documentation/Fl_Preferences.html index fc5c723d4..e39b6cdd3 100644 --- a/documentation/Fl_Preferences.html +++ b/documentation/Fl_Preferences.html @@ -69,9 +69,11 @@ method. </ul> -<H4><a name="Fl_Preferences.Fl_Preferences">Fl_Preferences(enum Root root, -const char *vendor, const char *application)<BR> -Fl_Preferences(Fl_Preferences &p, const char *groupname)</a></H4> +<H4><a name="Fl_Preferences.Fl_Preferences"> +Fl_Preferences(enum Root root, const char *vendor, const char *application)<BR> +Fl_Preferences(const char *path, const char *vendor, const char *application)<BR> +Fl_Preferences(Fl_Preferences &p, const char *groupname)<BR> +</a></H4> <P>The constructor creates a group that manages name/value pairs and child groups. Groups are ready for reading and writing at any time. @@ -89,9 +91,15 @@ name of your application. Both <tt>vendor</tt> and <tt>application</tt> must be valid relative UNIX pathnames and may contain '/'s to create deeper file structures. -<P>The <tt>groupname</tt> argument identifies a group of -entries. It can contain '/'s to get quick access to individual -elements inside the hierarchy. +<P>The second format is used to create a preferences file at an +arbitrary position in the file system. The file name is generated +as <tt><i>path</i>/<i>application</i>.prefs</tt>. If <i>application</i> +is 0, <i>path</i> must contain the full file name. + +<P>The third format generates a new group of preference entries +inside the group or file <i>p</i>. The <tt>groupname</tt> argument +identifies a group of entries. It can contain '/'s to get quick +access to individual elements inside the hierarchy. <H4><a name="Fl_Preferences.~Fl_Preferences">~Fl_Preferences()</a></H4> diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx index 98321d28a..dd3ee828e 100644 --- a/src/Fl_Preferences.cxx +++ b/src/Fl_Preferences.cxx @@ -693,12 +693,17 @@ Fl_Preferences::RootNode::RootNode( Fl_Preferences *prefs, Root root, const char // - construct the name of the file that will hold our preferences Fl_Preferences::RootNode::RootNode( Fl_Preferences *prefs, const char *path, const char *vendor, const char *application ) { - char filename[ FL_PATH_MAX ]; filename[0] = 0; - - snprintf(filename, sizeof(filename), "%s/%s.prefs", path, application); - + if (!vendor) + vendor = "unknown"; + if (!application) { + application = "unknown"; + filename_ = strdup(path); + } else { + char filename[ FL_PATH_MAX ]; filename[0] = 0; + snprintf(filename, sizeof(filename), "%s/%s.prefs", path, application); + filename_ = strdup(filename); + } prefs_ = prefs; - filename_ = strdup(filename); vendor_ = strdup(vendor); application_ = strdup(application); |
