diff options
author | MetaDucky <metaducky AT gmail DOT com> | 2013-11-20 22:11:57 +0100 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2013-11-29 23:35:16 -0500 |
commit | 5be786c804d36e9950598a01cf39f05574af2acc (patch) | |
tree | 488f9fd610b5785389c15d0faa02f840ba9e7110 /src/map.cpp | |
parent | 747bc40840ff13bcf9c7a60b790a6de24f94f946 (diff) | |
download | minetest-5be786c804d36e9950598a01cf39f05574af2acc.tar.gz minetest-5be786c804d36e9950598a01cf39f05574af2acc.tar.bz2 minetest-5be786c804d36e9950598a01cf39f05574af2acc.zip |
Fixed potential NULL pointer and leak when setting node metadata
Diffstat (limited to 'src/map.cpp')
-rw-r--r-- | src/map.cpp | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/src/map.cpp b/src/map.cpp index 0dbfd42f4..0f9c82c3c 100644 --- a/src/map.cpp +++ b/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; |