diff --git a/phpBB/phpbb/pagination.php b/phpBB/phpbb/pagination.php index 8820b89431..57e7932341 100644 --- a/phpBB/phpbb/pagination.php +++ b/phpBB/phpbb/pagination.php @@ -251,7 +251,7 @@ class pagination { if ($start < 0 || $start >= $num_items) { - return ($start < 0) ? 0 : floor(($num_items - 1) / $per_page) * $per_page; + return ($start < 0 || $num_items <= 0) ? 0 : floor(($num_items - 1) / $per_page) * $per_page; } return $start; diff --git a/tests/pagination/pagination_test.php b/tests/pagination/pagination_test.php index 4c658cbd56..b7a4f101aa 100644 --- a/tests/pagination/pagination_test.php +++ b/tests/pagination/pagination_test.php @@ -158,24 +158,39 @@ class phpbb_pagination_pagination_test extends phpbb_template_template_test_case public function validate_start_data() { return array( + array( + 0, + 0, + 0, + ), array( -1, + 20, + 0, + ), + array( + 20, + -30, 0, ), array( 0, + 20, 0, ), array( 10, + 20, 10, ), array( + 20, 20, 10, ), array( 30, + 20, 10, ), ); @@ -184,9 +199,9 @@ class phpbb_pagination_pagination_test extends phpbb_template_template_test_case /** * @dataProvider validate_start_data */ - public function test_validate_start($start, $expect) + public function test_validate_start($start, $num_items, $expect) { - $this->assertEquals($expect, $this->pagination->validate_start($start, 10, 20)); + $this->assertEquals($expect, $this->pagination->validate_start($start, 10, $num_items)); } public function reverse_start_data()