diff options
author | 2016-08-06 04:36:13 +0200 | |
---|---|---|
committer | 2016-08-06 19:22:28 +0200 | |
commit | 20a584b348c0e54a80f6fc6d3041788396e930ff (patch) | |
tree | 22470978647c9887820634b6935722b60b29f2df /src/lib/netlist/nl_setup.cpp | |
parent | 4cf6ac6cfd6b07f6768bca42d188609961e5524f (diff) |
Various netlist fixes:
- minor include cleanup
- fix a memory hole (caused by assign operators)
- more C++.
Diffstat (limited to 'src/lib/netlist/nl_setup.cpp')
-rw-r--r-- | src/lib/netlist/nl_setup.cpp | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index 8048b7db46a..f02d7d7871a 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -678,8 +678,8 @@ void setup_t::resolve_inputs() int tries = 100; while (m_links.size() > 0 && tries > 0) // FIXME: convert into constant { - auto li = m_links.begin(); - while (li != m_links.end()) + + for (auto li = m_links.begin(); li != m_links.end(); ) { const pstring t1s = li->first; const pstring t2s = li->second; @@ -703,18 +703,20 @@ void setup_t::resolve_inputs() log().verbose("deleting empty nets ..."); - // delete empty nets ... and save m_list ... - - for (auto net = netlist().m_nets.begin(); net != netlist().m_nets.end();) - { - if (net->get()->num_cons() == 0) - { - log().verbose("Deleting net {1} ...", net->get()->name()); - net = netlist().m_nets.erase(net); - } - else - ++net; - } + // delete empty nets + + netlist().m_nets.erase( + std::remove_if(netlist().m_nets.begin(), netlist().m_nets.end(), + [](plib::owned_ptr<detail::net_t> &x) + { + if (x->num_cons() == 0) + { + x->netlist().log().verbose("Deleting net {1} ...", x->name()); + return true; + } + else + return false; + }), netlist().m_nets.end()); pstring errstr(""); |