mirror of
https://github.com/golang/go
synced 2024-09-05 07:54:46 +00:00
unicode: panic if given rune is negative in SimpleFold
Fixes #16690 Change-Id: I6db588c4b0f23c5ec6bc9b85a488b60fab3f2f13 Reviewed-on: https://go-review.googlesource.com/30892 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
be302e6d43
commit
94f49fd40d
|
@ -332,6 +332,10 @@ type foldPair struct {
|
|||
// SimpleFold('1') = '1'
|
||||
//
|
||||
func SimpleFold(r rune) rune {
|
||||
if r < 0 {
|
||||
panic("unicode: negative rune is disallowed")
|
||||
}
|
||||
|
||||
if int(r) < len(asciiFold) {
|
||||
return rune(asciiFold[r])
|
||||
}
|
||||
|
|
|
@ -434,6 +434,20 @@ func TestSimpleFold(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestSimpleFoldPanic(t *testing.T) {
|
||||
got := func() (r interface{}) {
|
||||
defer func() { r = recover() }()
|
||||
SimpleFold(-1)
|
||||
return nil
|
||||
}()
|
||||
want := "unicode: negative rune is disallowed"
|
||||
|
||||
s, _ := got.(string)
|
||||
if s != want {
|
||||
t.Errorf("SimpleFold(-1) should panic, got: %q, want: %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
// Running 'go test -calibrate' runs the calibration to find a plausible
|
||||
// cutoff point for linear search of a range list vs. binary search.
|
||||
// We create a fake table and then time how long it takes to do a
|
||||
|
|
Loading…
Reference in a new issue