summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/nl_setup.cpp
diff options
context:
space:
mode:
author couriersud <couriersud@arcor.de>2016-08-06 04:36:13 +0200
committer couriersud <couriersud@arcor.de>2016-08-06 19:22:28 +0200
commit20a584b348c0e54a80f6fc6d3041788396e930ff (patch)
tree22470978647c9887820634b6935722b60b29f2df /src/lib/netlist/nl_setup.cpp
parent4cf6ac6cfd6b07f6768bca42d188609961e5524f (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.cpp30
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("");