]> Cypherpunks repositories - gostls13.git/commitdiff
bytes: narrow the search of IndexByte in Index
authorAndy Pan <panjf2000@gmail.com>
Mon, 23 Mar 2020 02:51:26 +0000 (02:51 +0000)
committerIan Lance Taylor <iant@golang.org>
Mon, 23 Mar 2020 03:44:45 +0000 (03:44 +0000)
Change-Id: I5a47b18b64e7f781dcc77440b06de36966e3d01d
GitHub-Last-Rev: 8576f1931d6e87a0823632ee35fcbc0d4eaaeaaf
GitHub-Pull-Request: golang/go#37993
Reviewed-on: https://go-review.googlesource.com/c/go/+/224589
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/bytes/bytes.go

index ef7294d805470d147f0a9ba49a1a5d249d9e4a51..0dce6af2265cff9fa5120708bcc7a41210d963f5 100644 (file)
@@ -1100,11 +1100,11 @@ func Index(s, sep []byte) int {
                        if s[i] != c0 {
                                // IndexByte is faster than bytealg.Index, so use it as long as
                                // we're not getting lots of false positives.
-                               o := IndexByte(s[i:t], c0)
+                               o := IndexByte(s[i+1:t], c0)
                                if o < 0 {
                                        return -1
                                }
-                               i += o
+                               i += o + 1
                        }
                        if s[i+1] == c1 && Equal(s[i:i+n], sep) {
                                return i
@@ -1129,11 +1129,11 @@ func Index(s, sep []byte) int {
        t := len(s) - n + 1
        for i < t {
                if s[i] != c0 {
-                       o := IndexByte(s[i:t], c0)
+                       o := IndexByte(s[i+1:t], c0)
                        if o < 0 {
                                break
                        }
-                       i += o
+                       i += o + 1
                }
                if s[i+1] == c1 && Equal(s[i:i+n], sep) {
                        return i