diff options
author | Hiroshi Ioka <hirochachacha@gmail.com> | 2016-10-12 23:05:35 +0900 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2016-10-12 15:45:03 +0000 |
commit | 94f49fd40dd907bcf9e16ab9a798409b8fcc13fd (patch) | |
tree | b13bab48cd1ba7f5338a549599f0aebb7c4e003f /src/unicode | |
parent | be302e6d43790c3398e5b03c955f257868855a80 (diff) | |
download | go-git-94f49fd40dd907bcf9e16ab9a798409b8fcc13fd.tar.gz |
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>
Diffstat (limited to 'src/unicode')
-rw-r--r-- | src/unicode/letter.go | 4 | ||||
-rw-r--r-- | src/unicode/letter_test.go | 14 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/unicode/letter.go b/src/unicode/letter.go index 8aec920d22..462daf88b9 100644 --- a/src/unicode/letter.go +++ b/src/unicode/letter.go @@ -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]) } diff --git a/src/unicode/letter_test.go b/src/unicode/letter_test.go index 0eb9ee95b0..15e4ade2a3 100644 --- a/src/unicode/letter_test.go +++ b/src/unicode/letter_test.go @@ -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 |