From d5faf5a38ebe164d705cc67baaa4b3c9d7eb6159 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Thu, 3 Apr 2014 19:17:04 +0100 Subject: Fixed some bugs * Fixed undefined behaviour * Fixed compression failure --- src/Chunk.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Chunk.cpp b/src/Chunk.cpp index a73bf7ca9..d80e93702 100644 --- a/src/Chunk.cpp +++ b/src/Chunk.cpp @@ -242,11 +242,12 @@ void cChunk::GetAllData(cChunkDataCallback & a_Callback) a_Callback.BiomeData (&m_BiomeMap); std::vector Blocks; - Blocks.reserve(cChunkDef::NumBlocks); + Blocks.reserve(NumBlocks); for (std::vector>::const_iterator itr = m_BlockTypes.begin(); itr != m_BlockTypes.end(); ++itr) { Blocks.insert(Blocks.end(), itr->begin(), itr->end()); } + Blocks.resize(NumBlocks); a_Callback.BlockTypes (Blocks.data()); a_Callback.BlockMeta (m_BlockMeta); @@ -291,7 +292,7 @@ void cChunk::SetAllData( m_BlockTypes.clear(); m_BlockTypes.reserve(Height / 2); - for (int y = Height; y >= 0; y--) + for (int y = Height - 1; y >= 0; y--) { for (int z = 0; z < Width; z++) { @@ -393,11 +394,12 @@ void cChunk::SetLight( void cChunk::GetBlockTypes(BLOCKTYPE * a_BlockTypes) { std::vector Blocks; - Blocks.reserve(cChunkDef::NumBlocks); + Blocks.reserve(NumBlocks); for (std::vector>::const_iterator itr = m_BlockTypes.begin(); itr != m_BlockTypes.end(); ++itr) { Blocks.insert(Blocks.end(), itr->begin(), itr->end()); } + Blocks.resize(NumBlocks); memcpy(a_BlockTypes, Blocks.data(), NumBlocks); } -- cgit v1.2.3