aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--freelist.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/freelist.go b/freelist.go
index de59aaa..aba48f5 100644
--- a/freelist.go
+++ b/freelist.go
@@ -24,7 +24,12 @@ func newFreelist() *freelist {
// size returns the size of the page after serialization.
func (f *freelist) size() int {
- return pageHeaderSize + (int(unsafe.Sizeof(pgid(0))) * f.count())
+ n := f.count()
+ if n >= 0xFFFF {
+ // The first element will be used to store the count. See freelist.write.
+ n++
+ }
+ return pageHeaderSize + (int(unsafe.Sizeof(pgid(0))) * n)
}
// count returns count of pages on the freelist