summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-01-12 13:55:19 +1100
committerJesse Duffield <jessedduffield@gmail.com>2020-01-12 14:01:45 +1100
commit8e7f278094e70b54d3d8e385bd97500858c0e560 (patch)
treedb145e3da5ddd99ca13a8690c7944a9fc27f77f7
parent83a895a46316a0e29d7ee7adabe76719cc773d63 (diff)
use mutexes on escape code
-rw-r--r--go.mod2
-rw-r--r--go.sum4
-rw-r--r--vendor/github.com/jesseduffield/gocui/escape.go17
-rw-r--r--vendor/modules.txt2
4 files changed, 20 insertions, 5 deletions
diff --git a/go.mod b/go.mod
index 7b32b71c5..bc6398a34 100644
--- a/go.mod
+++ b/go.mod
@@ -11,7 +11,7 @@ require (
github.com/golang/protobuf v1.3.2 // indirect
github.com/google/go-cmp v0.3.1 // indirect
github.com/integrii/flaggy v1.4.0
- github.com/jesseduffield/gocui v0.3.1-0.20200112022728-874f1f64ada7
+ github.com/jesseduffield/gocui v0.3.1-0.20200112025325-6c933915c351
github.com/jesseduffield/pty v1.2.1
github.com/jesseduffield/rollrus v0.0.0-20190701125922-dd028cb0bfd7
github.com/jesseduffield/termbox-go v0.0.0-20190630083001-9dd53af7214e // indirect
diff --git a/go.sum b/go.sum
index 1b091a75a..2fd3dc495 100644
--- a/go.sum
+++ b/go.sum
@@ -79,8 +79,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jesseduffield/gocui v0.3.1-0.20191116013947-b13bda319532 h1:V1Lk2rm5/p27NjnlF2ezzkxDaisHNcveMNueSD7RYgs=
github.com/jesseduffield/gocui v0.3.1-0.20191116013947-b13bda319532/go.mod h1:2RtZznzYKt8RLRwvFiSkXjU0Ei8WwHdubgnlaYH47dw=
-github.com/jesseduffield/gocui v0.3.1-0.20200112022728-874f1f64ada7 h1:tUFXrq4adXbLukiRhHBDkmk306mhEzdxhEtKbix4FeQ=
-github.com/jesseduffield/gocui v0.3.1-0.20200112022728-874f1f64ada7/go.mod h1:2RtZznzYKt8RLRwvFiSkXjU0Ei8WwHdubgnlaYH47dw=
+github.com/jesseduffield/gocui v0.3.1-0.20200112025325-6c933915c351 h1:+sSqd2YotacWt+1MNRN8ZmXnYoiJeblZeptzKiHIyv0=
+github.com/jesseduffield/gocui v0.3.1-0.20200112025325-6c933915c351/go.mod h1:2RtZznzYKt8RLRwvFiSkXjU0Ei8WwHdubgnlaYH47dw=
github.com/jesseduffield/pty v1.2.1 h1:7xYBiwNH0PpWqC8JmvrPq1a/ksNqyCavzWu9pbBGYWI=
github.com/jesseduffield/pty v1.2.1/go.mod h1:7jlS40+UhOqkZJDIG1B/H21xnuET/+fvbbnHCa8wSIo=
github.com/jesseduffield/roll v0.0.0-20190629104057-695be2e62b00 h1:+JaOkfBNYQYlGD7dgru8mCwYNEc5tRRI8mThlVANhSM=
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()
}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 9f0a28176..80c8a96db 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -32,7 +32,7 @@ github.com/hashicorp/hcl/json/token
github.com/integrii/flaggy
# github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99
github.com/jbenet/go-context/io
-# github.com/jesseduffield/gocui v0.3.1-0.20200112022728-874f1f64ada7
+# github.com/jesseduffield/gocui v0.3.1-0.20200112025325-6c933915c351
github.com/jesseduffield/gocui
# github.com/jesseduffield/pty v1.2.1
github.com/jesseduffield/pty