gitweb: fix use of uninitialized value.
[gitweb.git] / gitweb / gitweb.cgi
index 4e79390aff051f6a264a9b5a65a7b9e5c69ce051..f65b5d5ce2b53250bc34ad6dba311b873b5d29e0 100755 (executable)
@@ -14,6 +14,7 @@ use CGI::Util qw(unescape);
 use CGI::Carp qw(fatalsToBrowser);
 use Encode;
 use Fcntl ':mode';
+use File::Find qw();
 binmode STDOUT, ':utf8';
 
 our $cgi = new CGI;
@@ -697,23 +698,14 @@ sub git_read_refs {
        my @reflist;
 
        my @refs;
-       opendir my $dh, "$projectroot/$project/$ref_dir";
-       while (my $dir = readdir($dh)) {
-               if ($dir =~ m/^\./) {
-                       next;
-               }
-               if (-d "$projectroot/$project/$ref_dir/$dir") {
-                       opendir my $dh2, "$projectroot/$project/$ref_dir/$dir";
-                       my @subdirs = grep !m/^\./, readdir $dh2;
-                       closedir($dh2);
-                       foreach my $subdir (@subdirs) {
-                               push @refs, "$dir/$subdir"
-                       }
-                       next;
+       my $pfxlen = length("$projectroot/$project/$ref_dir");
+       File::Find::find(sub {
+               return if (/^\./);
+               if (-f $_) {
+                       push @refs, substr($File::Find::name, $pfxlen + 1);
                }
-               push @refs, $dir;
-       }
-       closedir($dh);
+       }, "$projectroot/$project/$ref_dir");
+
        foreach my $ref_file (@refs) {
                my $ref_id = git_read_hash("$project/$ref_dir/$ref_file");
                my $type = git_get_type($ref_id) || next;
@@ -787,9 +779,11 @@ sub mimetype_guess_file {
        open(MIME, $mimemap) or return undef;
        while (<MIME>) {
                my ($mime, $exts) = split(/\t+/);
-               my @exts = split(/\s+/, $exts);
-               foreach my $ext (@exts) {
-                       $mimemap{$ext} = $mime;
+               if (defined $exts) {
+                       my @exts = split(/\s+/, $exts);
+                       foreach my $ext (@exts) {
+                               $mimemap{$ext} = $mime;
+                       }
                }
        }
        close(MIME);
@@ -1441,7 +1435,7 @@ sub git_summary {
        my $headlist = git_read_refs("refs/heads");
        if (defined @$headlist) {
                git_header_div('heads');
-               git_heads_body($taglist, $head, 0, 15,
+               git_heads_body($headlist, $head, 0, 15,
                               $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=heads")}, "..."));
        }