diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2002-05-17 21:17:05 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2002-05-17 21:17:05 +0000 |
| commit | dc5fa8454ca1f01fa701c18a21e12f2dd552d46d (patch) | |
| tree | f240421463d408057d931694007f50f901d2a516 | |
| parent | 6a726f5087b3cfaa939ece41ec66c700ea96e53d (diff) | |
Fl_Preferences: fixed delete/free confusion, updated docu and sample on buffer size issue (buffer needs to allow for additional byte for trailing zero)
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2242 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
| -rw-r--r-- | documentation/Fl_Preferences.html | 3 | ||||
| -rw-r--r-- | src/Fl_Preferences.cxx | 29 | ||||
| -rw-r--r-- | test/preferences.fl | 2 |
3 files changed, 22 insertions, 12 deletions
diff --git a/documentation/Fl_Preferences.html b/documentation/Fl_Preferences.html index b5a30623c..88dd21ace 100644 --- a/documentation/Fl_Preferences.html +++ b/documentation/Fl_Preferences.html @@ -139,7 +139,7 @@ int get(const char *entry, int &value, int defaultValue)<BR> int get(const char *entry, float &value, float defaultValue)<BR> int get(const char *entry, double &value, double defaultValue )<BR> int get(const char *entry, char *&text, const char *defaultValue)<BR> -int get(const char *entry, char *text, const char *defaultValue, int maxSize)<BR> +int get(const char *entry, char *text, const char *defaultValue, int maxLength)<BR> int get(const char *entry, void *&data, const void *defaultValue, int defaultSize)<BR> int get(const char *entry, void *data, const void *defaultValue, int defaultSize, int maxSize)</a></H4> @@ -149,6 +149,7 @@ supplied. The return value indicates if the value was available (non-zero) or the default was used (0). If the '<tt>char *&text</tt>' or '<tt>void *&data</tt>' form is used, the resulting data must be freed with '<tt>free(value)</tt>'. +<P>'<tt>maxLength</tt>' is the maximum length of text that will be read. The text buffer must allow for one additional byte for a trailling zero. <H4><a name="Fl_Preferences.group">const char *Fl_Preferences::group(int ix)</a></H4> diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx index 1fb016546..ea873823a 100644 --- a/src/Fl_Preferences.cxx +++ b/src/Fl_Preferences.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Preferences.cxx,v 1.1.2.14 2002/05/16 20:53:22 matthiaswm Exp $" +// "$Id: Fl_Preferences.cxx,v 1.1.2.15 2002/05/17 21:17:05 matthiaswm Exp $" // // Preferences methods for the Fast Light Tool Kit (FLTK). // @@ -700,8 +700,10 @@ Fl_Preferences::RootNode::~RootNode() write(); if ( filename_ ) free( filename_ ); - delete vendor_; - delete application_; + if ( vendor_ ) + free( vendor_ ); + if ( application_ ) + free( application_ ); delete prefs_->node; } @@ -795,13 +797,19 @@ Fl_Preferences::Node::~Node() nx = nd->next_; delete nd; } - for ( int i = 0; i < nEntry; i++ ) + if ( entry ) { - delete entry[i].name; - delete entry[i].value; + for ( int i = 0; i < nEntry; i++ ) + { + if ( entry[i].name ) + free( entry[i].name ); + if ( entry[i].value ) + free( entry[i].value ); + } + free( entry ); } - delete[] entry; - if ( path_ ) free( path_ ); + if ( path_ ) + free( path_ ); } // recursively check if any entry is dirty (was changed after loading a fresh prefs file) @@ -881,7 +889,8 @@ void Fl_Preferences::Node::set( const char *name, const char *value ) if ( !value ) return; // annotation if ( strcmp( value, entry[i].value ) != 0 ) { - delete entry[i].value; + if ( entry[i].value ) + free( entry[i].value ); entry[i].value = strdup( value ); dirty_ = 1; } @@ -1067,5 +1076,5 @@ char Fl_Preferences::Node::remove() // -// End of "$Id: Fl_Preferences.cxx,v 1.1.2.14 2002/05/16 20:53:22 matthiaswm Exp $". +// End of "$Id: Fl_Preferences.cxx,v 1.1.2.15 2002/05/17 21:17:05 matthiaswm Exp $". // diff --git a/test/preferences.fl b/test/preferences.fl index c641600a3..a377160fd 100644 --- a/test/preferences.fl +++ b/test/preferences.fl @@ -196,7 +196,7 @@ Fl_Preferences app( Fl_Preferences::USER, "fltk.org", "test/preferences" ); app.getUserdataPath( path, sizeof(path) ); Fl_Preferences bed( app, "Bed" ); - bed.get( "alarm", buffer, "8:00", 80 ); + bed.get( "alarm", buffer, "8:00", 79 ); wAlarm->value( buffer ); bed.get( "ampm", intValue, 0 ); |
