good morning!!!!

Skip to content
Snippets Groups Projects
Commit b70eaf8a authored by Boqin Qin's avatar Boqin Qin Committed by Igor Mandrigin
Browse files

event: fix inconsistency in Lock and Unlock (#20933)


Co-authored-by: default avatarFelix Lange <fjl@twurst.com>
parent 93840b6c
No related branches found
No related tags found
No related merge requests found
......@@ -102,6 +102,7 @@ func (mux *TypeMux) Post(ev interface{}) error {
// Stop blocks until all current deliveries have finished.
func (mux *TypeMux) Stop() {
mux.mutex.Lock()
defer mux.mutex.Unlock()
for _, subs := range mux.subm {
for _, sub := range subs {
sub.closewait()
......@@ -109,11 +110,11 @@ func (mux *TypeMux) Stop() {
}
mux.subm = nil
mux.stopped = true
mux.mutex.Unlock()
}
func (mux *TypeMux) del(s *TypeMuxSubscription) {
mux.mutex.Lock()
defer mux.mutex.Unlock()
for typ, subs := range mux.subm {
if pos := find(subs, s); pos >= 0 {
if len(subs) == 1 {
......@@ -123,7 +124,6 @@ func (mux *TypeMux) del(s *TypeMuxSubscription) {
}
}
}
s.mux.mutex.Unlock()
}
func find(slice []*TypeMuxSubscription, item *TypeMuxSubscription) int {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment