Revert "Fix issue #2441: crash on respawn, since a conversion std::list to std::vecto...
authorkwolekr <kwolekr@minetest.net>
Fri, 20 Mar 2015 22:40:18 +0000 (18:40 -0400)
committerkwolekr <kwolekr@minetest.net>
Fri, 20 Mar 2015 22:41:26 +0000 (18:41 -0400)
This reverts parts of commit 9749d9fee6db99da1ab861dc04ec63ef973db3e0, which breaks node resolver
list clearing

src/mapgen.cpp
src/mapgen.h
src/nodedef.cpp
src/nodedef.h
src/script/lua_api/l_mapgen.cpp

index 1374184715376014dab049a3e0a04f8d06bd18bc..fd4fe5bb03a83b1329272eefc305e8126445d34d 100644 (file)
@@ -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) :
index c061c5d8a143fe166448196458f744cde9e361a7..8cac5859956e1069230b5965e64e315a19b880f2 100644 (file)
@@ -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 {
index 4aee1b1c6bc5e820aeb0be80e6a8dfdfb1fedd51..0654f66c5a5a29f41fdc3b5a667dfa26dbeaef55 100644 (file)
@@ -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)) {
index bd13a7bb2af7155bd4e9442c5e1f36710f01c567..dfd0f4f9982f9b18d8b4d8c8c6a94cd46ef8f567 100644 (file)
@@ -309,7 +309,7 @@ struct NodeResolveInfo {
                resolver = nr;
        }
 
-       std::vector<std::string> nodenames;
+       std::list<std::string> nodenames;
        std::list<NodeListInfo> nodelistinfo;
        NodeResolver *resolver;
 };
index e16b0153aac2ccf36e6f971eea98ee7322d1b087..a76e8625cf1448e3dcfd1ec378527b5c50845f30 100644 (file)
@@ -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",        ""));