Commit c633f85f authored by Marcel van Lohuizen's avatar Marcel van Lohuizen

exp/locale/collate: avoid double building in maketables.go. Also added check.

R=r
CC=golang-dev
https://golang.org/cl/6202063
parent cb9759d0
......@@ -22,6 +22,7 @@ import (
// - trie valueBlocks are currently 100K. There are a lot of sparse blocks
// and many consecutive values with the same stride. This can be further
// compacted.
// - compress secondary weights into 8 bits.
// entry is used to keep track of a single entry in the collation element table
// during building. Examples of entries can be found in the Default Unicode
......@@ -69,6 +70,7 @@ type Builder struct {
entry []*entry
t *table
err error
built bool
}
// NewBuilder returns a new Builder.
......@@ -178,14 +180,16 @@ func (b *Builder) error(e error) {
}
func (b *Builder) build() (*table, error) {
b.t = &table{}
b.contractCJK()
b.simplify() // requires contractCJK
b.processExpansions() // requires simplify
b.processContractions() // requires simplify
b.buildTrie() // requires process*
if !b.built {
b.built = true
b.t = &table{}
b.contractCJK()
b.simplify() // requires contractCJK
b.processExpansions() // requires simplify
b.processContractions() // requires simplify
b.buildTrie() // requires process*
}
if b.err != nil {
return nil, b.err
}
......@@ -334,6 +338,9 @@ func convertLargeWeights(elems [][]int) (res [][]int, err error) {
if p < firstLargePrimary {
continue
}
if p > 0xFFFF {
return elems, fmt.Errorf("found primary weight %X; should be <= 0xFFFF", p)
}
if p >= illegalPrimary {
ce[0] = illegalOffset + p - illegalPrimary
} else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment