summaryrefslogtreecommitdiffstats
path: root/hugolib/pagination.go
diff options
context:
space:
mode:
authorbep <bjorn.erik.pedersen@gmail.com>2015-03-06 00:30:51 +0100
committerbep <bjorn.erik.pedersen@gmail.com>2015-03-06 00:48:33 +0100
commit3343cacc0e5a94ca50537cb5612b5549be2d9ca0 (patch)
tree7bb57a1dde991052f451ef58d69c651ca17c179e /hugolib/pagination.go
parent6e1b0e0c00ced52979b8629161e36e45d51a47e6 (diff)
Avoid panic when pagination on 0 pages
Fixes #948
Diffstat (limited to 'hugolib/pagination.go')
-rw-r--r--hugolib/pagination.go20
1 files changed, 16 insertions, 4 deletions
diff --git a/hugolib/pagination.go b/hugolib/pagination.go
index 67cc02167..8fb4f4e4a 100644
--- a/hugolib/pagination.go
+++ b/hugolib/pagination.go
@@ -30,6 +30,8 @@ type pager struct {
type pagers []*pager
+var paginatorEmptyPages Pages
+
type paginator struct {
paginatedPages []Pages
pagers
@@ -52,6 +54,9 @@ func (p *pager) Url() template.HTML {
// Pages returns the elements on this page.
func (p *pager) Pages() Pages {
+ if len(p.paginatedPages) == 0 {
+ return paginatorEmptyPages
+ }
return p.paginatedPages[p.PageNumber()-1]
}
@@ -233,13 +238,20 @@ func newPaginator(pages Pages, size int, urlFactory paginationUrlFactory) (*pagi
split := splitPages(pages, size)
p := &paginator{total: len(pages), paginatedPages: split, size: size, paginationUrlFactory: urlFactory}
- pagers := make(pagers, len(split))
- for i := range p.paginatedPages {
- pagers[i] = &pager{number: (i + 1), paginator: p}
+ var ps pagers
+
+ if len(split) > 0 {
+ ps = make(pagers, len(split))
+ for i := range p.paginatedPages {
+ ps[i] = &pager{number: (i + 1), paginator: p}
+ }
+ } else {
+ ps = make(pagers, 1)
+ ps[0] = &pager{number: 1, paginator: p}
}
- p.pagers = pagers
+ p.pagers = ps
return p, nil
}