Fix a bug with building really big paginated lists, like when deleting all messages for a user.
This commit is contained in:
parent
ee179911cf
commit
1101ceeb9b
1 changed files with 4 additions and 3 deletions
|
|
@ -17,6 +17,7 @@ package WebGUI::Paginator;
|
||||||
use strict;
|
use strict;
|
||||||
use WebGUI::International;
|
use WebGUI::International;
|
||||||
use WebGUI::Utility;
|
use WebGUI::Utility;
|
||||||
|
use List::Util qw/min/;
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
|
|
@ -428,10 +429,10 @@ sub getPageData {
|
||||||
}
|
}
|
||||||
|
|
||||||
#Handle setByArrayRef or the old setDataByQuery method
|
#Handle setByArrayRef or the old setDataByQuery method
|
||||||
my @pageRows = ();
|
my $rowsPerPage = $self->{_rpp};
|
||||||
my $rowsPerPage = $self->{_rpp};
|
|
||||||
my $pageStartRow = ($pageNumber*$rowsPerPage)-$rowsPerPage;
|
my $pageStartRow = ($pageNumber*$rowsPerPage)-$rowsPerPage;
|
||||||
my $pageEndRow = $pageNumber*$rowsPerPage;
|
my $pageEndRow = min($pageNumber*$rowsPerPage, $#{$allRows}+1);
|
||||||
|
my @pageRows = ();
|
||||||
for (my $i=$pageStartRow; $i<$pageEndRow; $i++) {
|
for (my $i=$pageStartRow; $i<$pageEndRow; $i++) {
|
||||||
$pageRows[$i-$pageStartRow] = $allRows->[$i] if ($i <= $#{$self->{_rowRef}});
|
$pageRows[$i-$pageStartRow] = $allRows->[$i] if ($i <= $#{$self->{_rowRef}});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue