diff options
author | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2013-04-01 20:24:05 +0200 |
---|---|---|
committer | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2013-04-01 20:24:05 +0200 |
commit | 47b9f6d941a1a1e595834f8a95defc74f3e363f3 (patch) | |
tree | df808aa709f14bb8b97c3e4a6d4830d8d5261ef7 | |
parent | Pawn, Player: fixed asserts when teleporting players outside of the world (setting spawn Y to 256) (diff) | |
download | cuberite-47b9f6d941a1a1e595834f8a95defc74f3e363f3.tar cuberite-47b9f6d941a1a1e595834f8a95defc74f3e363f3.tar.gz cuberite-47b9f6d941a1a1e595834f8a95defc74f3e363f3.tar.bz2 cuberite-47b9f6d941a1a1e595834f8a95defc74f3e363f3.tar.lz cuberite-47b9f6d941a1a1e595834f8a95defc74f3e363f3.tar.xz cuberite-47b9f6d941a1a1e595834f8a95defc74f3e363f3.tar.zst cuberite-47b9f6d941a1a1e595834f8a95defc74f3e363f3.zip |
-rw-r--r-- | source/World.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/source/World.cpp b/source/World.cpp index 3f5e604bf..a573653d7 100644 --- a/source/World.cpp +++ b/source/World.cpp @@ -1599,13 +1599,19 @@ void cWorld::SetChunkData( m_Generator.GenerateBiomes(a_ChunkX, a_ChunkZ, BiomeMap); } - m_ChunkMap->SetChunkData( - a_ChunkX, a_ChunkY, a_ChunkZ, - a_BlockTypes, a_BlockMeta, a_BlockLight, a_BlockSkyLight, - a_HeightMap, *Biomes, - a_Entities, a_BlockEntities, - a_MarkDirty - ); + { + // _X: 2013_04_01: Hotfix for FS #347 - deadlock between the anvil loader thread and the tick thread + // By locking the entities here, we break one of the 3 conditions needed for the deadlock + cCSLock Lock(m_CSEntities); + + m_ChunkMap->SetChunkData( + a_ChunkX, a_ChunkY, a_ChunkZ, + a_BlockTypes, a_BlockMeta, a_BlockLight, a_BlockSkyLight, + a_HeightMap, *Biomes, + a_Entities, a_BlockEntities, + a_MarkDirty + ); + } // If a client is requesting this chunk, send it to them: if (m_ChunkMap->HasChunkAnyClients(a_ChunkX, a_ChunkY, a_ChunkZ)) |