From f7f83793c2d3f8f37b49bf1eab04f08f8118797e Mon Sep 17 00:00:00 2001 From: Carlo Zancanaro Date: Wed, 21 Nov 2012 02:10:41 +1100 Subject: Bug fixes for stupid things. --- impl/VariableAssignment.hpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'impl/VariableAssignment.hpp') diff --git a/impl/VariableAssignment.hpp b/impl/VariableAssignment.hpp index 08002b8..67896ef 100644 --- a/impl/VariableAssignment.hpp +++ b/impl/VariableAssignment.hpp @@ -60,15 +60,17 @@ struct DynamicVariableAssignment : public VariableAssignment { IdSet > get_changed() { IdSet > changed; - for (typename IdSet >::iterator - it = _touched.begin(), - ei = _touched.end(); - it != ei; - ++it) { - Variable& var = _system.variable(*it); - if (!_unstable.contains(var) && _old_values[var] != _values[var]) { - changed.insert(var); - _touched.remove(var); + if (_touched.size() > 0) { + for (typename IdSet >::iterator + it = _touched.begin(), + ei = _touched.end(); + it != ei; + ++it) { + Variable& var = _system.variable(*it); + if (!_unstable.contains(var) && _old_values[var] != _values[var]) { + changed.insert(var); + _touched.remove(var); + } } } //_touched.clear(); @@ -88,7 +90,6 @@ private: const DynamicMaxStrategy& const_strat = _strategy; DependencyAssignment assignment(*this, x); Domain val = _system[x]->eval(assignment, const_strat); - stack_depth--; if (val != _values[x]) { log::fixpoint << x << " = " << val << std::endl; @@ -108,6 +109,7 @@ private: log::fixpoint << indent() << x << " did not change: " << x << " = " << val << std::endl; } + stack_depth--; } else { log::fixpoint << indent() << x << " is stable: " << x << " = " << _values[x] << std::endl; -- cgit v1.2.3