diff options
author | kwolekr <kwolekr@minetest.net> | 2015-03-20 18:40:18 -0400 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2015-03-20 18:41:26 -0400 |
commit | 26153bab7dbe57a0200949c9a121058150e67f6c (patch) | |
tree | cda3013a86b95c29779b977aa95c03e1fac4be00 | |
parent | d03c2999daafaff5b48948bb97a5854f5fb56484 (diff) | |
download | minetest-26153bab7dbe57a0200949c9a121058150e67f6c.tar.gz minetest-26153bab7dbe57a0200949c9a121058150e67f6c.tar.bz2 minetest-26153bab7dbe57a0200949c9a121058150e67f6c.zip |
Revert "Fix issue #2441: crash on respawn, since a conversion std::list to std::vector on Environment.cpp"
This reverts parts of commit 9749d9fee6db99da1ab861dc04ec63ef973db3e0, which breaks node resolver
list clearing
-rw-r--r-- | src/mapgen.cpp | 5 | ||||
-rw-r--r-- | src/mapgen.h | 2 | ||||
-rw-r--r-- | src/nodedef.cpp | 12 | ||||
-rw-r--r-- | src/nodedef.h | 2 | ||||
-rw-r--r-- | src/script/lua_api/l_mapgen.cpp | 2 |
5 files changed, 12 insertions, 11 deletions
diff --git a/src/mapgen.cpp b/src/mapgen.cpp index 137418471..fd4fe5bb0 100644 --- a/src/mapgen.cpp +++ b/src/mapgen.cpp @@ -412,8 +412,9 @@ void GenerateNotifier::getEvents( std::map<std::string, std::vector<v3s16> > &event_map, bool peek_events) { - for (std::vector<GenNotifyEvent>::iterator it = m_notify_events.begin(); - it != m_notify_events.end(); ++it) { + std::list<GenNotifyEvent>::iterator it; + + for (it = m_notify_events.begin(); it != m_notify_events.end(); ++it) { GenNotifyEvent &gn = *it; std::string name = (gn.type == GENNOTIFY_DECORATION) ? "decoration#"+ itos(gn.id) : diff --git a/src/mapgen.h b/src/mapgen.h index c061c5d8a..8cac58599 100644 --- a/src/mapgen.h +++ b/src/mapgen.h @@ -91,7 +91,7 @@ public: private: u32 m_notify_on; std::set<u32> *m_notify_on_deco_ids; - std::vector<GenNotifyEvent> m_notify_events; + std::list<GenNotifyEvent> m_notify_events; }; struct MapgenSpecificParams { diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 4aee1b1c6..0654f66c5 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -445,7 +445,7 @@ private: content_t m_next_id; // List of node strings and node resolver callbacks to perform - std::vector<NodeResolveInfo *> m_pending_node_lookups; + std::list<NodeResolveInfo *> m_pending_node_lookups; // True when all nodes have been registered bool m_node_registration_complete; @@ -481,7 +481,7 @@ void CNodeDefManager::clear() m_next_id = 0; m_node_registration_complete = false; - for (std::vector<NodeResolveInfo *>::iterator + for (std::list<NodeResolveInfo *>::iterator it = m_pending_node_lookups.begin(); it != m_pending_node_lookups.end(); ++it) @@ -1320,7 +1320,7 @@ void CNodeDefManager::pendNodeResolve(NodeResolveInfo *nri) void CNodeDefManager::cancelNodeResolve(NodeResolver *resolver) { - for (std::vector<NodeResolveInfo *>::iterator + for (std::list<NodeResolveInfo *>::iterator it = m_pending_node_lookups.begin(); it != m_pending_node_lookups.end(); ++it) { @@ -1337,7 +1337,7 @@ void CNodeDefManager::runNodeResolverCallbacks() { while (!m_pending_node_lookups.empty()) { NodeResolveInfo *nri = m_pending_node_lookups.front(); - m_pending_node_lookups.erase(m_pending_node_lookups.begin()); + m_pending_node_lookups.pop_front(); nri->resolver->resolveNodeNames(nri); nri->resolver->m_lookup_done = true; delete nri; @@ -1356,7 +1356,7 @@ bool CNodeDefManager::getIdFromResolveInfo(NodeResolveInfo *nri, content_t c; std::string name = nri->nodenames.front(); - nri->nodenames.erase(nri->nodenames.begin()); + nri->nodenames.pop_front(); bool success = getId(name, c); if (!success && node_alt != "") { @@ -1396,7 +1396,7 @@ bool CNodeDefManager::getIdsFromResolveInfo(NodeResolveInfo *nri, content_t c; std::string name = nri->nodenames.front(); - nri->nodenames.erase(nri->nodenames.begin()); + nri->nodenames.pop_front(); if (name.substr(0,6) != "group:") { if (getId(name, c)) { diff --git a/src/nodedef.h b/src/nodedef.h index bd13a7bb2..dfd0f4f99 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -309,7 +309,7 @@ struct NodeResolveInfo { resolver = nr; } - std::vector<std::string> nodenames; + std::list<std::string> nodenames; std::list<NodeListInfo> nodelistinfo; NodeResolver *resolver; }; diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp index e16b0153a..a76e8625c 100644 --- a/src/script/lua_api/l_mapgen.cpp +++ b/src/script/lua_api/l_mapgen.cpp @@ -459,7 +459,7 @@ int ModApiMapgen::l_register_biome(lua_State *L) } NodeResolveInfo *nri = new NodeResolveInfo(b); - std::vector<std::string> &nnames = nri->nodenames; + std::list<std::string> &nnames = nri->nodenames; nnames.push_back(getstringfield_default(L, index, "node_top", "")); nnames.push_back(getstringfield_default(L, index, "node_filler", "")); nnames.push_back(getstringfield_default(L, index, "node_stone", "")); |