gojay

high performance JSON encoder/decoder with stream API for Golang
git clone git://git.lair.cx/gojay
Log | Files | Refs | README | LICENSE

commit 7a748baed1f1ad343517effd3bf5a9c9fc64bf85
parent 90d953358b68936b4791b8db205b3a5918b1b7a5
Author: Francois Parquet <francois.parquet@gmail.com>
Date:   Sun, 17 Mar 2019 21:49:56 +0800

Merge pull request #98 from OGKevin/use-writer-lock-for-cancel

Use writer lock for cancel.
Diffstat:
Mencode_stream.go | 5+++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/encode_stream.go b/encode_stream.go @@ -125,14 +125,15 @@ func (s *StreamEncoder) Value(key interface{}) interface{} { // // After calling cancel, Done() will return a closed channel. func (s *StreamEncoder) Cancel(err error) { - s.mux.RLock() + s.mux.Lock() + defer s.mux.Unlock() + select { case <-s.done: default: s.err = err close(s.done) } - s.mux.RUnlock() } // AddObject adds an object to be encoded.