]> git.sesse.net Git - vlc/commitdiff
* src/misc/variables.c: fixed bug (config_GetPsz() can return NULL).
authorGildas Bazin <gbazin@videolan.org>
Tue, 2 Nov 2004 23:40:20 +0000 (23:40 +0000)
committerGildas Bazin <gbazin@videolan.org>
Tue, 2 Nov 2004 23:40:20 +0000 (23:40 +0000)
src/misc/variables.c

index f210d0e8c963b7ef93c78caaee844e2acf7f1061..ea78562ac1ca6607a064a398179e873a23e53084 100644 (file)
@@ -1232,29 +1232,31 @@ static int InheritValue( vlc_object_t *p_this, const char *psz_name,
             break;
         case VLC_VAR_LIST:
         {
-            char * psz_var = config_GetPsz( p_this, psz_name );
+            char *psz_orig, *psz_var;
             vlc_list_t *p_list = malloc(sizeof(vlc_list_t));
             p_val->p_list = p_list;
             p_list->i_count = 0;
-            while ( *psz_var )
+
+            psz_var = psz_orig = config_GetPsz( p_this, psz_name );
+            while( psz_var && *psz_var )
             {
-                char * psz_item = psz_var;
+                char *psz_item = psz_var;
                 vlc_value_t val;
-                while ( *psz_var && *psz_var != ',' )
-                    psz_var++;
-                if ( *psz_var == ',' )
+                while( *psz_var && *psz_var != ',' ) psz_var++;
+                if( *psz_var == ',' )
                 {
                     *psz_var = '\0';
                     psz_var++;
                 }
                 val.i_int = strtol( psz_item, NULL, 0 );
-                INSERT_ELEM( p_list->p_values, p_list->i_count, p_list->i_count,
-                             val );
+                INSERT_ELEM( p_list->p_values, p_list->i_count,
+                             p_list->i_count, val );
                 /* p_list->i_count is incremented twice by INSERT_ELEM */
                 p_list->i_count--;
-                INSERT_ELEM( p_list->pi_types, p_list->i_count, p_list->i_count,
-                             VLC_VAR_INTEGER );
+                INSERT_ELEM( p_list->pi_types, p_list->i_count,
+                             p_list->i_count, VLC_VAR_INTEGER );
             }
+            if( psz_orig ) free( psz_orig );
             break;
         }
         default: