summaryrefslogtreecommitdiff
path: root/vendor/go.etcd.io/bbolt/node.go
diff options
context:
space:
mode:
authordependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>2020-06-18 09:07:30 +0000
committerDaniel J Walsh <dwalsh@redhat.com>2020-06-18 05:55:55 -0400
commit16dbc160c5f465ca1535bc13c07293f2b0dd89e5 (patch)
tree34428e29124555bf507a433ddc9f8875a13f8c1e /vendor/go.etcd.io/bbolt/node.go
parent6472b44c3420fbba04dc3b5fe96be6576ee43e61 (diff)
downloadpodman-16dbc160c5f465ca1535bc13c07293f2b0dd89e5.tar.gz
podman-16dbc160c5f465ca1535bc13c07293f2b0dd89e5.tar.bz2
podman-16dbc160c5f465ca1535bc13c07293f2b0dd89e5.zip
Bump go.etcd.io/bbolt from 1.3.4 to 1.3.5
Bumps [go.etcd.io/bbolt](https://github.com/etcd-io/bbolt) from 1.3.4 to 1.3.5. - [Release notes](https://github.com/etcd-io/bbolt/releases) - [Commits](https://github.com/etcd-io/bbolt/compare/v1.3.4...v1.3.5) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'vendor/go.etcd.io/bbolt/node.go')
-rw-r--r--vendor/go.etcd.io/bbolt/node.go25
1 files changed, 10 insertions, 15 deletions
diff --git a/vendor/go.etcd.io/bbolt/node.go b/vendor/go.etcd.io/bbolt/node.go
index 1690eef3f..73988b5c4 100644
--- a/vendor/go.etcd.io/bbolt/node.go
+++ b/vendor/go.etcd.io/bbolt/node.go
@@ -3,7 +3,6 @@ package bbolt
import (
"bytes"
"fmt"
- "reflect"
"sort"
"unsafe"
)
@@ -208,36 +207,32 @@ func (n *node) write(p *page) {
}
// Loop over each item and write it to the page.
- bp := uintptr(unsafe.Pointer(p)) + unsafe.Sizeof(*p) + n.pageElementSize()*uintptr(len(n.inodes))
+ // off tracks the offset into p of the start of the next data.
+ off := unsafe.Sizeof(*p) + n.pageElementSize()*uintptr(len(n.inodes))
for i, item := range n.inodes {
_assert(len(item.key) > 0, "write: zero-length inode key")
+ // Create a slice to write into of needed size and advance
+ // byte pointer for next iteration.
+ sz := len(item.key) + len(item.value)
+ b := unsafeByteSlice(unsafe.Pointer(p), off, 0, sz)
+ off += uintptr(sz)
+
// Write the page element.
if n.isLeaf {
elem := p.leafPageElement(uint16(i))
- elem.pos = uint32(bp - uintptr(unsafe.Pointer(elem)))
+ elem.pos = uint32(uintptr(unsafe.Pointer(&b[0])) - uintptr(unsafe.Pointer(elem)))
elem.flags = item.flags
elem.ksize = uint32(len(item.key))
elem.vsize = uint32(len(item.value))
} else {
elem := p.branchPageElement(uint16(i))
- elem.pos = uint32(bp - uintptr(unsafe.Pointer(elem)))
+ elem.pos = uint32(uintptr(unsafe.Pointer(&b[0])) - uintptr(unsafe.Pointer(elem)))
elem.ksize = uint32(len(item.key))
elem.pgid = item.pgid
_assert(elem.pgid != p.id, "write: circular dependency occurred")
}
- // Create a slice to write into of needed size and advance
- // byte pointer for next iteration.
- klen, vlen := len(item.key), len(item.value)
- sz := klen + vlen
- b := *(*[]byte)(unsafe.Pointer(&reflect.SliceHeader{
- Data: bp,
- Len: sz,
- Cap: sz,
- }))
- bp += uintptr(sz)
-
// Write data for the element to the end of the page.
l := copy(b, item.key)
copy(b[l:], item.value)