mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 19:17:38 +08:00
fix lock.
This commit is contained in:
parent
c07a8a9c8a
commit
9d3690ed8f
@ -299,13 +299,7 @@ func (g *GroupInfo) AdministratorOrOwner() bool {
|
|||||||
|
|
||||||
func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo {
|
func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo {
|
||||||
r := g.Read(func(info *GroupInfo) interface{} {
|
r := g.Read(func(info *GroupInfo) interface{} {
|
||||||
for _, m := range info.Members {
|
return info.FindMemberWithoutLock(uin)
|
||||||
f := m
|
|
||||||
if f.Uin == uin {
|
|
||||||
return f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
})
|
||||||
if r == nil {
|
if r == nil {
|
||||||
return nil
|
return nil
|
||||||
@ -313,6 +307,16 @@ func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo {
|
|||||||
return r.(*GroupMemberInfo)
|
return r.(*GroupMemberInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *GroupInfo) FindMemberWithoutLock(uin int64) *GroupMemberInfo {
|
||||||
|
for _, m := range g.Members {
|
||||||
|
f := m
|
||||||
|
if f.Uin == uin {
|
||||||
|
return f
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (g *GroupInfo) Update(f func(*GroupInfo)) {
|
func (g *GroupInfo) Update(f func(*GroupInfo)) {
|
||||||
g.lock.Lock()
|
g.lock.Lock()
|
||||||
defer g.lock.Unlock()
|
defer g.lock.Unlock()
|
||||||
|
@ -451,7 +451,7 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
|
|||||||
mem := group.FindMember(m.Head.GetFromUin())
|
mem := group.FindMember(m.Head.GetFromUin())
|
||||||
if mem == nil {
|
if mem == nil {
|
||||||
group.Update(func(_ *GroupInfo) {
|
group.Update(func(_ *GroupInfo) {
|
||||||
if mem = group.FindMember(m.Head.GetFromUin()); mem != nil {
|
if mem = group.FindMemberWithoutLock(m.Head.GetFromUin()); mem != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
info, _ := c.getMemberInfo(group.Code, m.Head.GetFromUin())
|
info, _ := c.getMemberInfo(group.Code, m.Head.GetFromUin())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user