From: Elias Fleckenstein Date: Wed, 8 Jun 2022 21:07:30 +0000 (+0200) Subject: Fix map race condition X-Git-Tag: v0.2.0~4 X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=7132ab02479fb73fe4926750469bde3a81bc769d;p=hydra-dragonfire.git Fix map race condition --- diff --git a/map.go b/map.go index f877dca..3d4faee 100644 --- a/map.go +++ b/map.go @@ -41,23 +41,21 @@ func newMap(l *lua.LState) *Map { func (mp *Map) process(client *Client, pkt *mt.Pkt) { switch cmd := pkt.Cmd.(type) { case *mt.ToCltBlkData: - go func() { - mp.mu.Lock() - defer mp.mu.Unlock() + mp.mu.Lock() + defer mp.mu.Unlock() - blk := &MapBlk{} - blk.data = &cmd.Blk + blk := &MapBlk{} + blk.data = &cmd.Blk - if mp.pathfind { - if oldblk, ok := mp.blocks[cmd.Blkpos]; ok { - pathRemoveBlock(oldblk) - } - - pathAddBlock(mp, blk, cmd.Blkpos) + if mp.pathfind { + if oldblk, ok := mp.blocks[cmd.Blkpos]; ok { + pathRemoveBlock(oldblk) } - mp.blocks[cmd.Blkpos] = blk - }() + pathAddBlock(mp, blk, cmd.Blkpos) + } + + mp.blocks[cmd.Blkpos] = blk client.conn.SendCmd(&mt.ToSrvGotBlks{Blks: [][3]int16{cmd.Blkpos}}) }