From 4ba30889f4785887a18ab175dc0d72b1108b450d Mon Sep 17 00:00:00 2001 From: Gildas Bazin Date: Sat, 16 Apr 2005 10:01:18 +0000 Subject: [PATCH] * src/misc/configuration.c: YAF (yet another fix). --- src/misc/configuration.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/misc/configuration.c b/src/misc/configuration.c index 7e8f2f399a..e5e0f53278 100644 --- a/src/misc/configuration.c +++ b/src/misc/configuration.c @@ -911,8 +911,9 @@ int __config_LoadConfigFile( vlc_object_t *p_this, const char *psz_module_name ) if( p_item->psz_value_saved ) free( p_item->psz_value_saved ); p_item->psz_value_saved = 0; - if( p_item->psz_value && p_item->psz_value_orig && - strcmp(p_item->psz_value, p_item->psz_value_orig) ) + if( !p_item->psz_value || !p_item->psz_value_orig || + (p_item->psz_value && p_item->psz_value_orig && + strcmp(p_item->psz_value,p_item->psz_value_orig))) p_item->psz_value_saved = p_item->psz_value ? strdup( p_item->psz_value ) : 0; @@ -1195,6 +1196,10 @@ int SaveConfigFile( vlc_object_t *p_this, const char *psz_module_name, float f_value = p_item->f_value; char *psz_value = p_item->psz_value; + if( p_item->i_type & CONFIG_HINT ) + /* ignore hints */ + continue; + if( b_autosave && !p_item->b_autosave ) { i_value = p_item->i_value_saved; @@ -1202,10 +1207,10 @@ int SaveConfigFile( vlc_object_t *p_this, const char *psz_module_name, psz_value = p_item->psz_value_saved; if( !psz_value ) psz_value = p_item->psz_value_orig; } - - if( p_item->i_type & CONFIG_HINT ) - /* ignore hints */ - continue; + else + { + p_item->b_dirty = VLC_FALSE; + } switch( p_item->i_type ) { @@ -1258,14 +1263,15 @@ int SaveConfigFile( vlc_object_t *p_this, const char *psz_module_name, fprintf( file, "%s=%s\n", p_item->psz_name, psz_value ? psz_value : "" ); - if( p_item->psz_value_saved ) - free( p_item->psz_value_saved ); + if( b_autosave && !p_item->b_autosave ) break; + + if( p_item->psz_value_saved ) free( p_item->psz_value_saved ); p_item->psz_value_saved = 0; - if( psz_value && p_item->psz_value_orig && - strcmp( psz_value, p_item->psz_value_orig ) ) + if( (psz_value && p_item->psz_value_orig && + strcmp( psz_value, p_item->psz_value_orig )) || + !psz_value || !p_item->psz_value_orig) p_item->psz_value_saved = psz_value ? strdup(psz_value):0; } - p_item->b_dirty = VLC_FALSE; } fprintf( file, "\n" ); -- 2.39.2