From 8291f03ef4bffdf59bbd5c44920c63b8f059d920 Mon Sep 17 00:00:00 2001 From: qydysky Date: Tue, 2 Jan 2024 22:14:11 +0800 Subject: [PATCH] 1 --- sync/RWMutex.go | 4 ++-- sync/RWMutex_test.go | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sync/RWMutex.go b/sync/RWMutex.go index e2f0ed3..61b676e 100644 --- a/sync/RWMutex.go +++ b/sync/RWMutex.go @@ -114,7 +114,7 @@ func (m *RWMutex) RLock(to ...time.Duration) (unlockf func(beforeUlock ...func() panic("had unlock") } if done != nil { - done() + defer done() } if m.read.Add(-1) == 0 { for i := 0; i < len(beforeUlock); i++ { @@ -144,7 +144,7 @@ func (m *RWMutex) Lock(to ...time.Duration) (unlockf func(beforeUlock ...func()) panic("had unlock") } if done != nil { - done() + defer done() } for i := 0; i < len(beforeUlock); i++ { beforeUlock[i]() diff --git a/sync/RWMutex_test.go b/sync/RWMutex_test.go index 008eab6..7f4f3ff 100644 --- a/sync/RWMutex_test.go +++ b/sync/RWMutex_test.go @@ -116,6 +116,14 @@ func Test7(t *testing.T) { } } +func Panic_Test8(t *testing.T) { + var l RWMutex + ul := l.Lock(time.Second, time.Second) + ul(func() { + time.Sleep(time.Second * 10) + }) +} + // ulock rlock rlock func Panic_Test4(t *testing.T) { var l RWMutex -- 2.39.2