summaryrefslogtreecommitdiff
path: root/impl/VariableAssignment.hpp
diff options
context:
space:
mode:
authorCarlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au>2012-10-15 17:11:14 +1100
committerCarlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au>2012-10-15 17:11:14 +1100
commit697c1c0cd3815eee72b3eedb874fe0e044a69432 (patch)
tree060ce9577a9651cbcb2f11c6444bc649efc4a468 /impl/VariableAssignment.hpp
parentbe1de4be954c80875ad4108e0a33e8e131b2f2c0 (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.hpp8
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: