]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 335354: editparams.cgi crashes when editing the 'languages' and 'defaultlanguage...
authorlpsolit%gmail.com <>
Tue, 21 Aug 2007 02:05:43 +0000 (02:05 +0000)
committerlpsolit%gmail.com <>
Tue, 21 Aug 2007 02:05:43 +0000 (02:05 +0000)
Bugzilla/Config/Common.pm
Bugzilla/Install/Util.pm
Bugzilla/Template.pm

index 14406019ddb9a251780752135d4079c4e76f7479..8435b20a1ae15ad7a4225e6cc8cd352cc64309c7 100644 (file)
@@ -305,17 +305,23 @@ sub check_image_converter {
 }
 
 sub check_languages {
-    my @languages = split /[,\s]+/, trim($_[0]);
+    my ($lang) = @_;
+    my @languages = split(/[,\s]+/, trim($lang));
     if(!scalar(@languages)) {
        return "You need to specify a language tag."
     }
     my $templatedir = bz_locations()->{'templatedir'};
+    my %lang_seen;
+    my @validated_languages;
     foreach my $language (@languages) {
        if(   ! -d "$templatedir/$language/custom" 
           && ! -d "$templatedir/$language/default") {
           return "The template directory for $language does not exist";
        }
+       push(@validated_languages, $language) unless $lang_seen{$language}++;
     }
+    # Rebuild the list of language tags, avoiding duplicates.
+    $_[0] = join(', ', @validated_languages);
     return "";
 }
 
index 931d9f1b55f0aad8e20be928d409cbdd9a486ab1..9bab77a8a76e3c0343cdfc22272173b47b0d9ed7 100644 (file)
@@ -127,7 +127,7 @@ sub template_include_path {
     
     my @supported;
     if (defined $params->{use_languages}) {
-        @supported = $params->{use_languages};
+        @supported = @{$params->{use_languages}};
     }
     else {
         my @dirs = glob(bz_locations()->{'templatedir'} . "/*");
index ece959778879743d6f3c693fd4a8b7fa7f7017a3..20fe8311256e778d6229679a18d44e2c075051f3 100644 (file)
@@ -87,7 +87,7 @@ sub getTemplateIncludePath {
     my $cache = Bugzilla->request_cache;
     my $lang  = $cache->{'language'} || "";
     $cache->{"template_include_path_$lang"} ||= template_include_path({
-        use_languages => trim(Bugzilla->params->{'languages'}),
+        use_languages => [split(/[\s,]+/, Bugzilla->params->{'languages'})],
         only_language => $lang });
     return $cache->{"template_include_path_$lang"};
 }