From 92410e067395f10c8c93fad62c3e6c4b7aca82f0 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Thu, 18 Aug 2016 08:44:57 -0600 Subject: fix Go 1.7 pointer reference bug This commit fixes a bug where page end-of-header pointers were being converted to byte slices even when the pointer did not point to allocated memory. This occurs with pages that have a `page.count` of zero. Note: This was not an issue in Go 1.6 but the new Go 1.7 SSA backend handles `nil` checks differently. See https://github.com/golang/go/issues/16772 --- node.go | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'node.go') diff --git a/node.go b/node.go index e9d64af..159318b 100644 --- a/node.go +++ b/node.go @@ -201,6 +201,11 @@ func (n *node) write(p *page) { } p.count = uint16(len(n.inodes)) + // Stop here if there are no items to write. + if p.count == 0 { + return + } + // Loop over each item and write it to the page. b := (*[maxAllocSize]byte)(unsafe.Pointer(&p.ptr))[n.pageElementSize()*len(n.inodes):] for i, item := range n.inodes { -- cgit v1.2.3