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,18 +299,22 @@ func (g *GroupInfo) AdministratorOrOwner() bool {
|
||||
|
||||
func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo {
|
||||
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
|
||||
if f.Uin == uin {
|
||||
return f
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if r == nil {
|
||||
return nil
|
||||
}
|
||||
return r.(*GroupMemberInfo)
|
||||
}
|
||||
|
||||
func (g *GroupInfo) Update(f func(*GroupInfo)) {
|
||||
|
@ -451,7 +451,7 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
|
||||
mem := group.FindMember(m.Head.GetFromUin())
|
||||
if mem == nil {
|
||||
group.Update(func(_ *GroupInfo) {
|
||||
if mem = group.FindMember(m.Head.GetFromUin()); mem != nil {
|
||||
if mem = group.FindMemberWithoutLock(m.Head.GetFromUin()); mem != nil {
|
||||
return
|
||||
}
|
||||
info, _ := c.getMemberInfo(group.Code, m.Head.GetFromUin())
|
||||
|
Loading…
x
Reference in New Issue
Block a user