summaryrefslogtreecommitdiff
path: root/src/minimap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/minimap.cpp')
-rw-r--r--src/minimap.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/minimap.cpp b/src/minimap.cpp
index d37a083ef..950202c6a 100644
--- a/src/minimap.cpp
+++ b/src/minimap.cpp
@@ -102,7 +102,13 @@ void MinimapUpdateThread::doUpdate()
while (popBlockUpdate(&update)) {
if (update.data) {
- m_blocks_cache[update.pos] = update.data;
+ // Swap two values in the map using single lookup
+ std::pair<std::map<v3s16, MinimapMapblock*>::iterator, bool>
+ result = m_blocks_cache.insert(std::make_pair(update.pos, update.data));
+ if (result.second == false) {
+ delete result.first->second;
+ result.first->second = update.data;
+ }
} else {
std::map<v3s16, MinimapMapblock *>::iterator it;
it = m_blocks_cache.find(update.pos);