Index: Slim/Utils/Prefs.pm =================================================================== --- Slim/Utils/Prefs.pm (revision 4084) +++ Slim/Utils/Prefs.pm (working copy) @@ -648,6 +648,18 @@ } $prefs{$key}{$ind} = $value; + } elsif ( $ind =~ /\D/ ) { + # Setting hash pref from an existing scalar pref + my $old = $prefs{$key}; + CORE::delete $prefs{$key}; + $prefs{$key}{'0'} = $old; + $prefs{$key}{$ind} = $value; + } else { + # Setting array pref from an existing pref + my $old = $prefs{$key}; + CORE::delete $prefs{$key}; + $prefs{$key}[0] = $old; + $prefs{$key}[$ind] = $value; } } elsif ( $ind =~ /\D/ ) { # Setting hash pref where no keys currently exist @@ -675,8 +687,10 @@ onChange($key, $value, $ind); # must mark $ind as defined or indexed prefs cause an error in this msg - if (defined $ind) { + if (defined $ind && ref $prefs{$key} eq 'ARRAY') { $::d_prefs && msg("Setting prefs $key $ind equal to " . ((defined $prefs{$key}[$ind]) ? $prefs{$key}[$ind] : "undefined") . "\n"); + } elsif (defined $ind && ref $prefs{$key} eq 'HASH') { + $::d_prefs && msg("Setting prefs $key $ind equal to " . ((defined $prefs{$key}{$ind}) ? $prefs{$key}{$ind} : "undefined") . "\n"); } else { $::d_prefs && msg("Setting prefs $key equal to " . ((defined $prefs{$key}) ? $prefs{$key} : "undefined") . "\n"); }