Skip to content

Commit 26153ba

Browse files
committedMar 20, 2015
Revert "Fix issue #2441: crash on respawn, since a conversion std::list to std::vector on Environment.cpp"
This reverts parts of commit 9749d9f, which breaks node resolver list clearing
1 parent d03c299 commit 26153ba

File tree

5 files changed

+12
-11
lines changed

5 files changed

+12
-11
lines changed
 

‎src/mapgen.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -412,8 +412,9 @@ void GenerateNotifier::getEvents(
412412
std::map<std::string, std::vector<v3s16> > &event_map,
413413
bool peek_events)
414414
{
415-
for (std::vector<GenNotifyEvent>::iterator it = m_notify_events.begin();
416-
it != m_notify_events.end(); ++it) {
415+
std::list<GenNotifyEvent>::iterator it;
416+
417+
for (it = m_notify_events.begin(); it != m_notify_events.end(); ++it) {
417418
GenNotifyEvent &gn = *it;
418419
std::string name = (gn.type == GENNOTIFY_DECORATION) ?
419420
"decoration#"+ itos(gn.id) :

‎src/mapgen.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class GenerateNotifier {
9191
private:
9292
u32 m_notify_on;
9393
std::set<u32> *m_notify_on_deco_ids;
94-
std::vector<GenNotifyEvent> m_notify_events;
94+
std::list<GenNotifyEvent> m_notify_events;
9595
};
9696

9797
struct MapgenSpecificParams {

‎src/nodedef.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ class CNodeDefManager: public IWritableNodeDefManager {
445445
content_t m_next_id;
446446

447447
// List of node strings and node resolver callbacks to perform
448-
std::vector<NodeResolveInfo *> m_pending_node_lookups;
448+
std::list<NodeResolveInfo *> m_pending_node_lookups;
449449

450450
// True when all nodes have been registered
451451
bool m_node_registration_complete;
@@ -481,7 +481,7 @@ void CNodeDefManager::clear()
481481
m_next_id = 0;
482482

483483
m_node_registration_complete = false;
484-
for (std::vector<NodeResolveInfo *>::iterator
484+
for (std::list<NodeResolveInfo *>::iterator
485485
it = m_pending_node_lookups.begin();
486486
it != m_pending_node_lookups.end();
487487
++it)
@@ -1320,7 +1320,7 @@ void CNodeDefManager::pendNodeResolve(NodeResolveInfo *nri)
13201320

13211321
void CNodeDefManager::cancelNodeResolve(NodeResolver *resolver)
13221322
{
1323-
for (std::vector<NodeResolveInfo *>::iterator
1323+
for (std::list<NodeResolveInfo *>::iterator
13241324
it = m_pending_node_lookups.begin();
13251325
it != m_pending_node_lookups.end();
13261326
++it) {
@@ -1337,7 +1337,7 @@ void CNodeDefManager::runNodeResolverCallbacks()
13371337
{
13381338
while (!m_pending_node_lookups.empty()) {
13391339
NodeResolveInfo *nri = m_pending_node_lookups.front();
1340-
m_pending_node_lookups.erase(m_pending_node_lookups.begin());
1340+
m_pending_node_lookups.pop_front();
13411341
nri->resolver->resolveNodeNames(nri);
13421342
nri->resolver->m_lookup_done = true;
13431343
delete nri;
@@ -1356,7 +1356,7 @@ bool CNodeDefManager::getIdFromResolveInfo(NodeResolveInfo *nri,
13561356

13571357
content_t c;
13581358
std::string name = nri->nodenames.front();
1359-
nri->nodenames.erase(nri->nodenames.begin());
1359+
nri->nodenames.pop_front();
13601360

13611361
bool success = getId(name, c);
13621362
if (!success && node_alt != "") {
@@ -1396,7 +1396,7 @@ bool CNodeDefManager::getIdsFromResolveInfo(NodeResolveInfo *nri,
13961396

13971397
content_t c;
13981398
std::string name = nri->nodenames.front();
1399-
nri->nodenames.erase(nri->nodenames.begin());
1399+
nri->nodenames.pop_front();
14001400

14011401
if (name.substr(0,6) != "group:") {
14021402
if (getId(name, c)) {

‎src/nodedef.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ struct NodeResolveInfo {
309309
resolver = nr;
310310
}
311311

312-
std::vector<std::string> nodenames;
312+
std::list<std::string> nodenames;
313313
std::list<NodeListInfo> nodelistinfo;
314314
NodeResolver *resolver;
315315
};

‎src/script/lua_api/l_mapgen.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ int ModApiMapgen::l_register_biome(lua_State *L)
459459
}
460460

461461
NodeResolveInfo *nri = new NodeResolveInfo(b);
462-
std::vector<std::string> &nnames = nri->nodenames;
462+
std::list<std::string> &nnames = nri->nodenames;
463463
nnames.push_back(getstringfield_default(L, index, "node_top", ""));
464464
nnames.push_back(getstringfield_default(L, index, "node_filler", ""));
465465
nnames.push_back(getstringfield_default(L, index, "node_stone", ""));

0 commit comments

Comments
 (0)
Please sign in to comment.