Commit 6b902628 authored by Robert Griesemer's avatar Robert Griesemer

godoc: fix bug in zip.go

The result of sort.Search is in the interval [0,n);
specifically, if no entry is found, the result is n
and not -1.

R=dsymonds
CC=golang-dev
https://golang.org/cl/4982041
parent 58b05e24
...@@ -183,9 +183,10 @@ func (z zipList) lookup(name string) (index int, exact bool) { ...@@ -183,9 +183,10 @@ func (z zipList) lookup(name string) (index int, exact bool) {
i := sort.Search(len(z), func(i int) bool { i := sort.Search(len(z), func(i int) bool {
return name <= z[i].Name return name <= z[i].Name
}) })
if i < 0 { if i >= len(z) {
return -1, false return -1, false
} }
// 0 <= i < len(z)
if z[i].Name == name { if z[i].Name == name {
return i, true return i, true
} }
...@@ -196,9 +197,10 @@ func (z zipList) lookup(name string) (index int, exact bool) { ...@@ -196,9 +197,10 @@ func (z zipList) lookup(name string) (index int, exact bool) {
j := sort.Search(len(z), func(i int) bool { j := sort.Search(len(z), func(i int) bool {
return name <= z[i].Name return name <= z[i].Name
}) })
if j < 0 { if j >= len(z) {
return -1, false return -1, false
} }
// 0 <= j < len(z)
if strings.HasPrefix(z[j].Name, name) { if strings.HasPrefix(z[j].Name, name) {
return i + j, false return i + j, false
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment