summaryrefslogtreecommitdiff
path: root/src/environment.cpp
diff options
context:
space:
mode:
authorLoic Blot <loic.blot@unix-experience.fr>2015-03-05 15:34:39 +0100
committerLoic Blot <loic.blot@unix-experience.fr>2015-03-05 15:36:20 +0100
commit9749d9fee6db99da1ab861dc04ec63ef973db3e0 (patch)
treeddf9c165e187a5bccdf0226f01b7bb35a6518ee8 /src/environment.cpp
parent0d1eedcccc8b83fd5f5a9a75389fe8ac97d2c697 (diff)
downloadminetest-9749d9fee6db99da1ab861dc04ec63ef973db3e0.tar.gz
minetest-9749d9fee6db99da1ab861dc04ec63ef973db3e0.tar.bz2
minetest-9749d9fee6db99da1ab861dc04ec63ef973db3e0.zip
Fix issue #2441: crash on respawn, since a conversion std::list to std::vector on Environment.cpp
* Also change some std::list to std::vector for ClientMap::renderMap * Remove disabled code in ClientMap::renderMap, disabled since a long time
Diffstat (limited to 'src/environment.cpp')
-rw-r--r--src/environment.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/environment.cpp b/src/environment.cpp
index b1372431f..60a26e65f 100644
--- a/src/environment.cpp
+++ b/src/environment.cpp
@@ -2383,13 +2383,16 @@ void ClientEnvironment::step(float dtime)
g_profiler->avg("CEnv: num of simple objects", m_simple_objects.size());
for(std::vector<ClientSimpleObject*>::iterator
i = m_simple_objects.begin(); i != m_simple_objects.end();) {
- ClientSimpleObject *simple = *i;
std::vector<ClientSimpleObject*>::iterator cur = i;
- ++i;
+ ClientSimpleObject *simple = *cur;
+
simple->step(dtime);
- if(simple->m_to_be_removed){
+ if(simple->m_to_be_removed) {
delete simple;
- m_simple_objects.erase(cur);
+ i = m_simple_objects.erase(cur);
+ }
+ else {
+ ++i;
}
}
}