aboutsummaryrefslogtreecommitdiff
path: root/internal/format/packidx/lookup.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/format/packidx/lookup.go')
-rw-r--r--internal/format/packidx/lookup.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/internal/format/packidx/lookup.go b/internal/format/packidx/lookup.go
index a9196aff..e4b565b6 100644
--- a/internal/format/packidx/lookup.go
+++ b/internal/format/packidx/lookup.go
@@ -45,8 +45,9 @@ func (idx *Packidx) Lookup(oid []byte) (offset uint64, found bool, err error) {
case target >= hiKey:
mid = hi - 1
default:
- frac := float64(target-loKey) / float64(hiKey-loKey)
- mid = lo + int(frac*float64(hi-lo-1))
+ hi128, lo128 := bits.Mul64(target-loKey, uint64(hi-lo-1)) //#nosec G115
+ q, _ := bits.Div64(hi128, lo128, hiKey-loKey)
+ mid = lo + int(q) //#nosec G115
}
switch cmp := bytes.Compare(oid, idx.OIDAt(mid)); {