From a1195c6b5dcd760aa939805727f92a2df306bfa5 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 2 Jul 2022 20:46:04 -0600 Subject: ls-trees: Crawl! --- pkg/btrfs/io3_btree.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'pkg/btrfs') diff --git a/pkg/btrfs/io3_btree.go b/pkg/btrfs/io3_btree.go index b4eb4cb..b5414ab 100644 --- a/pkg/btrfs/io3_btree.go +++ b/pkg/btrfs/io3_btree.go @@ -237,15 +237,16 @@ func (fs *FS) treeSearch(treeRoot btrfsvol.LogicalAddr, fn func(Key) int) (TreeP // is returned. // // Implement this search as a binary search. - items := node.Data.BodyLeaf - for len(items) > 0 { - midpoint := len(items) / 2 - direction := fn(items[midpoint].Head.Key) + beg := 0 + end := len(node.Data.BodyLeaf) - 1 + for beg < end { + midpoint := (beg + end) / 2 + direction := fn(node.Data.BodyLeaf[midpoint].Head.Key) switch { case direction < 0: - items = items[:midpoint] + end = midpoint case direction > 0: - items = items[midpoint+1:] + beg = midpoint + 1 case direction == 0: path = append(path, TreePathElem{ ItemIdx: midpoint, -- cgit v1.2.3-2-g168b