about summary refs log tree commit homepage
path: root/lib/PublicInbox/Search.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Search.pm')
-rw-r--r--lib/PublicInbox/Search.pm5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm
index b07f4ea6..fb35b747 100644
--- a/lib/PublicInbox/Search.pm
+++ b/lib/PublicInbox/Search.pm
@@ -7,6 +7,7 @@ package PublicInbox::Search;
 use strict;
 use parent qw(Exporter);
 our @EXPORT_OK = qw(mdocid);
+use List::Util qw(max);
 
 # values for searching, changing the numeric value breaks
 # compatibility with old indices (so don't change them it)
@@ -203,7 +204,9 @@ sub _xdb ($) {
 
                 # We need numeric sorting so shard[0] is first for reading
                 # Xapian metadata, if needed
-                for (sort { $a <=> $b } grep(/\A[0-9]+\z/, readdir($dh))) {
+                my $last = max(grep(/\A[0-9]+\z/, readdir($dh)));
+                return if !defined($last);
+                for (0..$last) {
                         my $shard_dir = "$dir/$_";
                         if (-d $shard_dir && -r _) {
                                 push @xdb, $X{Database}->new($shard_dir);