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:
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.