summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/jesseduffield/gocui/escape.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/jesseduffield/gocui/escape.go')
-rw-r--r--vendor/github.com/jesseduffield/gocui/escape.go17
1 files changed, 16 insertions, 1 deletions
diff --git a/vendor/github.com/jesseduffield/gocui/escape.go b/vendor/github.com/jesseduffield/gocui/escape.go
index c88309b07..c09003e31 100644
--- a/vendor/github.com/jesseduffield/gocui/escape.go
+++ b/vendor/github.com/jesseduffield/gocui/escape.go
@@ -5,8 +5,10 @@
package gocui
import (
- "github.com/go-errors/errors"
"strconv"
+ "sync"
+
+ "github.com/go-errors/errors"
)
type escapeInterpreter struct {
@@ -15,6 +17,7 @@ type escapeInterpreter struct {
csiParam []string
curFgColor, curBgColor Attribute
mode OutputMode
+ mutex sync.Mutex
}
type escapeState int
@@ -34,6 +37,9 @@ var (
// runes in case of error will output the non-parsed runes as a string.
func (ei *escapeInterpreter) runes() []rune {
+ ei.mutex.Lock()
+ defer ei.mutex.Unlock()
+
switch ei.state {
case stateNone:
return []rune{0x1b}
@@ -66,6 +72,9 @@ func newEscapeInterpreter(mode OutputMode) *escapeInterpreter {
// reset sets the escapeInterpreter in initial state.
func (ei *escapeInterpreter) reset() {
+ ei.mutex.Lock()
+ defer ei.mutex.Unlock()
+
ei.state = stateNone
ei.curFgColor = ColorDefault
ei.curBgColor = ColorDefault
@@ -76,6 +85,9 @@ func (ei *escapeInterpreter) reset() {
// of an escape sequence, and as such should not be printed verbatim. Otherwise,
// it's not an escape sequence.
func (ei *escapeInterpreter) parseOne(ch rune) (isEscape bool, err error) {
+ ei.mutex.Lock()
+ defer ei.mutex.Unlock()
+
// Sanity checks
if len(ei.csiParam) > 20 {
return false, errCSITooLong
@@ -179,6 +191,9 @@ func (ei *escapeInterpreter) outputNormal() error {
// 0x11 - 0xe8: 216 different colors
// 0xe9 - 0x1ff: 24 different shades of grey
func (ei *escapeInterpreter) output256() error {
+ ei.mutex.Lock()
+ defer ei.mutex.Unlock()
+
if len(ei.csiParam) < 3 {
return ei.outputNormal()
}