1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

fix lock.

This commit is contained in:
Mrs4s 2020-12-12 21:17:38 +08:00
parent c07a8a9c8a
commit 9d3690ed8f
2 changed files with 12 additions and 8 deletions

View File

@ -299,18 +299,22 @@ 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)
})
if r == nil {
return nil
}
return r.(*GroupMemberInfo)
}
func (g *GroupInfo) FindMemberWithoutLock(uin int64) *GroupMemberInfo {
for _, m := range g.Members {
f := m f := m
if f.Uin == uin { if f.Uin == uin {
return f return f
} }
} }
return nil return nil
})
if r == nil {
return nil
}
return r.(*GroupMemberInfo)
} }
func (g *GroupInfo) Update(f func(*GroupInfo)) { func (g *GroupInfo) Update(f func(*GroupInfo)) {

View File

@ -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())