]> git.lizzy.rs Git - hydra-dragonfire.git/commitdiff
Fix map race condition
authorElias Fleckenstein <eliasfleckenstein@web.de>
Wed, 8 Jun 2022 21:07:30 +0000 (23:07 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Wed, 8 Jun 2022 21:07:30 +0000 (23:07 +0200)
map.go

diff --git a/map.go b/map.go
index f877dcaa14347ed66bf8283c1dcbf1beeee7b7b7..3d4faee8ae8878d0716ffd65ad8b61b642cd31d4 100644 (file)
--- 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}})
        }