diff options
author | Carlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au> | 2012-10-15 17:11:14 +1100 |
---|---|---|
committer | Carlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au> | 2012-10-15 17:11:14 +1100 |
commit | 697c1c0cd3815eee72b3eedb874fe0e044a69432 (patch) | |
tree | 060ce9577a9651cbcb2f11c6444bc649efc4a468 /impl/VariableAssignment.hpp | |
parent | be1de4be954c80875ad4108e0a33e8e131b2f2c0 (diff) |
Some bug fixes for the solver.
Still doesn't work in clang, though.
Diffstat (limited to 'impl/VariableAssignment.hpp')
-rw-r--r-- | impl/VariableAssignment.hpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/impl/VariableAssignment.hpp b/impl/VariableAssignment.hpp index 907b5ab..ae5efd7 100644 --- a/impl/VariableAssignment.hpp +++ b/impl/VariableAssignment.hpp @@ -35,8 +35,12 @@ struct DynamicVariableAssignment : public VariableAssignment<Domain> { void invalidate(const Variable<Domain>& x) const { log::fixpoint << indent() << "Invalidating " << x << std::endl; - _stable.remove(x); - _values[x] = infinity<Domain>(); + if (_stable.contains(x)) { + _stable.remove(x); + _values[x] = infinity<Domain>(); + + solve(x); + } } private: |