summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2022-06-05 16:58:48 +0200
committersfan5 <sfan5@live.de>2022-06-05 17:48:51 +0200
commita69b7abe00fb818fd88f3cd04e7f9997ffd21072 (patch)
tree3ae1e1df21f834166395aa0a26fc9886e9fdd51e /src
parent03d86ea0b4900cd0394649597d278d465512d629 (diff)
downloadminetest-a69b7abe00fb818fd88f3cd04e7f9997ffd21072.tar.gz
minetest-a69b7abe00fb818fd88f3cd04e7f9997ffd21072.tar.bz2
minetest-a69b7abe00fb818fd88f3cd04e7f9997ffd21072.zip
Improve LBMManager::applyLBMs() code
Fixes a possible bug for lbms on content ID zero and removes unsafe casts.
Diffstat (limited to 'src')
-rw-r--r--src/serverenvironment.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp
index 06bfc7b98..39cd7aa64 100644
--- a/src/serverenvironment.cpp
+++ b/src/serverenvironment.cpp
@@ -258,23 +258,22 @@ void LBMManager::applyLBMs(ServerEnvironment *env, MapBlock *block, u32 stamp)
v3s16 pos;
MapNode n;
content_t c;
- lbm_lookup_map::const_iterator it = getLBMsIntroducedAfter(stamp);
+ auto it = getLBMsIntroducedAfter(stamp);
for (; it != m_lbm_lookup.end(); ++it) {
// Cache previous version to speedup lookup which has a very high performance
// penalty on each call
- content_t previous_c{};
- std::vector<LoadingBlockModifierDef *> *lbm_list = nullptr;
+ content_t previous_c = CONTENT_IGNORE;
+ const std::vector<LoadingBlockModifierDef *> *lbm_list = nullptr;
for (pos.X = 0; pos.X < MAP_BLOCKSIZE; pos.X++)
for (pos.Y = 0; pos.Y < MAP_BLOCKSIZE; pos.Y++)
for (pos.Z = 0; pos.Z < MAP_BLOCKSIZE; pos.Z++) {
- n = block->getNodeNoEx(pos);
+ n = block->getNodeNoCheck(pos, nullptr);
c = n.getContent();
// If content_t are not matching perform an LBM lookup
if (previous_c != c) {
- lbm_list = (std::vector<LoadingBlockModifierDef *> *)
- it->second.lookup(c);
+ lbm_list = it->second.lookup(c);
previous_c = c;
}