]> Cypherpunks repositories - gostls13.git/commitdiff
strings: narrow the search range of IndexByte in Index
authorAndy Pan <panjf2000@gmail.com>
Mon, 23 Mar 2020 04:53:40 +0000 (04:53 +0000)
committerIan Lance Taylor <iant@golang.org>
Mon, 23 Mar 2020 19:14:29 +0000 (19:14 +0000)
Same as https://golang.org/cl/224589.

Change-Id: I6a9e2ea60bf6e1888a95bad0331c92079a7eff99
GitHub-Last-Rev: 81c13c0f5b2ee6ae7842a7b73799b7821f78be59
GitHub-Pull-Request: golang/go#38016
Reviewed-on: https://go-review.googlesource.com/c/go/+/224593
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/strings/strings.go

index 2789f5fb25af2f9c05c840fc461fc4d05076a9e3..6d78b9ef16d9e08085bc9455d00bd40f775947ac 100644 (file)
@@ -1044,11 +1044,11 @@ func Index(s, substr string) int {
                        if s[i] != c0 {
                                // IndexByte is faster than bytealg.IndexString, 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 && s[i:i+n] == substr {
                                return i
@@ -1073,11 +1073,11 @@ func Index(s, substr string) int {
        fails := 0
        for i < t {
                if s[i] != c0 {
-                       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 && s[i:i+n] == substr {
                        return i