diff options
author | Loic Blot <loic.blot@unix-experience.fr> | 2015-03-05 15:34:39 +0100 |
---|---|---|
committer | Loic Blot <loic.blot@unix-experience.fr> | 2015-03-05 15:36:20 +0100 |
commit | 9749d9fee6db99da1ab861dc04ec63ef973db3e0 (patch) | |
tree | ddf9c165e187a5bccdf0226f01b7bb35a6518ee8 /src/environment.cpp | |
parent | 0d1eedcccc8b83fd5f5a9a75389fe8ac97d2c697 (diff) | |
download | minetest-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.cpp | 11 |
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; } } } |