From 1101ceeb9bf75d4a99040ed4a373cf8fe6549478 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Tue, 22 Jun 2010 22:09:47 -0700 Subject: [PATCH] Fix a bug with building really big paginated lists, like when deleting all messages for a user. --- lib/WebGUI/Paginator.pm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/WebGUI/Paginator.pm b/lib/WebGUI/Paginator.pm index 9e0da0b66..fd0d9d9fb 100644 --- a/lib/WebGUI/Paginator.pm +++ b/lib/WebGUI/Paginator.pm @@ -17,6 +17,7 @@ package WebGUI::Paginator; use strict; use WebGUI::International; use WebGUI::Utility; +use List::Util qw/min/; =head1 NAME @@ -428,10 +429,10 @@ sub getPageData { } #Handle setByArrayRef or the old setDataByQuery method - my @pageRows = (); - my $rowsPerPage = $self->{_rpp}; + my $rowsPerPage = $self->{_rpp}; 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++) { $pageRows[$i-$pageStartRow] = $allRows->[$i] if ($i <= $#{$self->{_rowRef}}); }