From 3cbd9c9a4449793de6506101056634efc11aaad8 Mon Sep 17 00:00:00 2001 From: Piotr Tabor Date: Sun, 18 Dec 2022 13:36:37 +0100 Subject: [PATCH] Detect pages that have multiple flags set. Signed-off-by: Piotr Tabor --- node.go | 4 ++-- page.go | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/node.go b/node.go index 73988b5c4..9923fe934 100644 --- a/node.go +++ b/node.go @@ -191,9 +191,9 @@ func (n *node) read(p *page) { func (n *node) write(p *page) { // Initialize page. if n.isLeaf { - p.flags |= leafPageFlag + p.flags = leafPageFlag } else { - p.flags |= branchPageFlag + p.flags = branchPageFlag } if len(n.inodes) >= 0xFFFF { diff --git a/page.go b/page.go index e93f62731..379645c97 100644 --- a/page.go +++ b/page.go @@ -2,7 +2,6 @@ package bbolt import ( "fmt" - "log" "os" "sort" "unsafe" @@ -55,9 +54,13 @@ func (p *page) meta() *meta { } func (p *page) fastCheck(id pgid) { - if p.id != id { - log.Panicf("Page expected to be: %v, but self identifies as %v", id, p.id) - } + _assert(p.id == id, "Page expected to be: %v, but self identifies as %v", id, p.id) + // Only one flag of page-type can be set. + _assert(p.flags == branchPageFlag || + p.flags == leafPageFlag || + p.flags == metaPageFlag || + p.flags == freelistPageFlag, + "page %v: has unexpected type/flags: %x", p.id, p.flags) } // leafPageElement retrieves the leaf node by index