mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Fixed potential NULL pointer and leak when setting node metadata
This commit is contained in:
parent
747bc40840
commit
5be786c804
5 changed files with 56 additions and 19 deletions
19
src/map.cpp
19
src/map.cpp
|
@ -2279,7 +2279,7 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> & modified_blocks)
|
|||
updateLighting(lighting_modified_blocks, modified_blocks);
|
||||
}
|
||||
|
||||
NodeMetadata* Map::getNodeMetadata(v3s16 p)
|
||||
NodeMetadata *Map::getNodeMetadata(v3s16 p)
|
||||
{
|
||||
v3s16 blockpos = getNodeBlockPos(p);
|
||||
v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
|
||||
|
@ -2289,8 +2289,7 @@ NodeMetadata* Map::getNodeMetadata(v3s16 p)
|
|||
<<PP(blockpos)<<std::endl;
|
||||
block = emergeBlock(blockpos, false);
|
||||
}
|
||||
if(!block)
|
||||
{
|
||||
if(!block){
|
||||
infostream<<"WARNING: Map::getNodeMetadata(): Block not found"
|
||||
<<std::endl;
|
||||
return NULL;
|
||||
|
@ -2299,7 +2298,7 @@ NodeMetadata* Map::getNodeMetadata(v3s16 p)
|
|||
return meta;
|
||||
}
|
||||
|
||||
void Map::setNodeMetadata(v3s16 p, NodeMetadata *meta)
|
||||
bool Map::setNodeMetadata(v3s16 p, NodeMetadata *meta)
|
||||
{
|
||||
v3s16 blockpos = getNodeBlockPos(p);
|
||||
v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
|
||||
|
@ -2309,13 +2308,13 @@ void Map::setNodeMetadata(v3s16 p, NodeMetadata *meta)
|
|||
<<PP(blockpos)<<std::endl;
|
||||
block = emergeBlock(blockpos, false);
|
||||
}
|
||||
if(!block)
|
||||
{
|
||||
if(!block){
|
||||
infostream<<"WARNING: Map::setNodeMetadata(): Block not found"
|
||||
<<std::endl;
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
block->m_node_metadata.set(p_rel, meta);
|
||||
return true;
|
||||
}
|
||||
|
||||
void Map::removeNodeMetadata(v3s16 p)
|
||||
|
@ -2342,8 +2341,7 @@ NodeTimer Map::getNodeTimer(v3s16 p)
|
|||
<<PP(blockpos)<<std::endl;
|
||||
block = emergeBlock(blockpos, false);
|
||||
}
|
||||
if(!block)
|
||||
{
|
||||
if(!block){
|
||||
infostream<<"WARNING: Map::getNodeTimer(): Block not found"
|
||||
<<std::endl;
|
||||
return NodeTimer();
|
||||
|
@ -2362,8 +2360,7 @@ void Map::setNodeTimer(v3s16 p, NodeTimer t)
|
|||
<<PP(blockpos)<<std::endl;
|
||||
block = emergeBlock(blockpos, false);
|
||||
}
|
||||
if(!block)
|
||||
{
|
||||
if(!block){
|
||||
infostream<<"WARNING: Map::setNodeTimer(): Block not found"
|
||||
<<std::endl;
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue