1
0
mirror of https://github.com/gdamore/tcell.git synced 2025-04-26 13:48:53 +08:00

fixes #110 Fix infinite loop in TParam

This commit is contained in:
Garrett D'Amore 2016-05-18 20:34:21 -07:00
parent cf91b3e205
commit 747b2da800

View File

@ -296,6 +296,7 @@ func (t *Terminfo) TParm(s string, p ...int) string {
f += string(ch)
for ch == '+' || ch == '-' || ch == '#' || ch == ' ' {
f += string(ch)
ch, _ = buf.ReadByte()
}
for (ch >= '0' && ch <= '9') || ch == '.' {
ch, _ = buf.ReadByte()
@ -582,23 +583,15 @@ func (t *Terminfo) TColor(fg, bg Color) string {
return rv
}
var terminfos map[string]*Terminfo
var aliases map[string]string
var dblock sync.Mutex
func initDB() {
if terminfos == nil {
terminfos = make(map[string]*Terminfo)
}
if aliases == nil {
aliases = make(map[string]string)
}
}
var (
dblock sync.Mutex
terminfos = make(map[string]*Terminfo)
aliases = make(map[string]string)
)
// AddTerminfo can be called to register a new Terminfo entry.
func AddTerminfo(t *Terminfo) {
dblock.Lock()
initDB()
terminfos[t.Name] = t
for _, x := range t.Aliases {
terminfos[x] = t
@ -633,7 +626,6 @@ func loadFromFile(fname string, term string) (*Terminfo, error) {
// or in this package's source directory as database.json).
func LookupTerminfo(name string) (*Terminfo, error) {
dblock.Lock()
initDB()
t := terminfos[name]
dblock.Unlock()