aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/unicode/letter.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/unicode/letter.go')
-rw-r--r--libgo/go/unicode/letter.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/libgo/go/unicode/letter.go b/libgo/go/unicode/letter.go
index a57566f..268e457 100644
--- a/libgo/go/unicode/letter.go
+++ b/libgo/go/unicode/letter.go
@@ -154,7 +154,8 @@ func is32(ranges []Range32, r uint32) bool {
// Is reports whether the rune is in the specified table of ranges.
func Is(rangeTab *RangeTable, r rune) bool {
r16 := rangeTab.R16
- if len(r16) > 0 && r <= rune(r16[len(r16)-1].Hi) {
+ // Compare as uint32 to correctly handle negative runes.
+ if len(r16) > 0 && uint32(r) <= uint32(r16[len(r16)-1].Hi) {
return is16(r16, uint16(r))
}
r32 := rangeTab.R32
@@ -166,7 +167,8 @@ func Is(rangeTab *RangeTable, r rune) bool {
func isExcludingLatin(rangeTab *RangeTable, r rune) bool {
r16 := rangeTab.R16
- if off := rangeTab.LatinOffset; len(r16) > off && r <= rune(r16[len(r16)-1].Hi) {
+ // Compare as uint32 to correctly handle negative runes.
+ if off := rangeTab.LatinOffset; len(r16) > off && uint32(r) <= uint32(r16[len(r16)-1].Hi) {
return is16(r16[off:], uint16(r))
}
r32 := rangeTab.R32