mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
The IndexString implementation in the bytealg package requires that the string passed into it be in the range '2 <= len(s) <= MaxLen' where MaxLen may be any value (including 0). CL 156998 added calls to bytealg.IndexString where MaxLen was not first checked. This led to an illegal instruction on s390x with the vector facility disabled. This CL guards the calls to bytealg.IndexString with a MaxLen check. If the check fails then the code now falls back to the pre CL 156998 implementation (a loop over the runes in the string). Since the MaxLen check is now in place the generic implementation is no longer called so I have returned it to its original unimplemented state. In future we may want to drop MaxLen to prevent this kind of confusion. Fixes #41552. Change-Id: Ibeb3f08720444a05c08d719ed97f6cef2423bbe9 Reviewed-on: https://go-review.googlesource.com/c/go/+/256717 Run-TryBot: Michael Munday <mike.munday@ibm.com> TryBot-Result: Go Bot <gobot@golang.org> Trust: Michael Munday <mike.munday@ibm.com> Reviewed-by: Keith Randall <khr@golang.org>
29 lines
872 B
Go
29 lines
872 B
Go
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// +build !amd64,!arm64,!s390x
|
|
|
|
package bytealg
|
|
|
|
const MaxBruteForce = 0
|
|
|
|
// Index returns the index of the first instance of b in a, or -1 if b is not present in a.
|
|
// Requires 2 <= len(b) <= MaxLen.
|
|
func Index(a, b []byte) int {
|
|
panic("unimplemented")
|
|
}
|
|
|
|
// IndexString returns the index of the first instance of b in a, or -1 if b is not present in a.
|
|
// Requires 2 <= len(b) <= MaxLen.
|
|
func IndexString(a, b string) int {
|
|
panic("unimplemented")
|
|
}
|
|
|
|
// Cutover reports the number of failures of IndexByte we should tolerate
|
|
// before switching over to Index.
|
|
// n is the number of bytes processed so far.
|
|
// See the bytes.Index implementation for details.
|
|
func Cutover(n int) int {
|
|
panic("unimplemented")
|
|
}
|