gojay

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

commit 92f89c6b16fa2656cefa41ccefd9fce021eafb81
parent 90d953358b68936b4791b8db205b3a5918b1b7a5
Author: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
Date:   Thu,  7 Mar 2019 20:26:32 +0100

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.