bin: release all subformulas between runs
Fixes #262, reported by Maximilien Colange. * bin/common_output.cc, bin/common_aoutput.cc, bin/common_aoutput.hh: Clear the set of atomic propositions if --stats=%[...]x was used. * spot/twa/bdddict.cc: Release any formula associated to a BDD when it is unregistered, do not wait for the dictionary's destruction. This was the main culprit for #262. * tests/core/ltl2tgba.test: Add test cases. * NEWS: Mention the bug.
This commit is contained in:
parent
cdef3d69f0
commit
acdaaac4f0
6 changed files with 42 additions and 11 deletions
|
|
@ -518,6 +518,8 @@ hoa_stat_printer::print(const spot::const_parsed_aut_ptr& haut,
|
|||
output_aut_ = nullptr;
|
||||
input_aut_ = nullptr;
|
||||
haut_scc_.reset();
|
||||
aut_ap_.clear();
|
||||
haut_ap_.clear();
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -121,11 +121,15 @@ protected:
|
|||
});
|
||||
}
|
||||
public:
|
||||
void clear()
|
||||
{
|
||||
val_.clear();
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void set(T begin, T end)
|
||||
{
|
||||
val_.clear();
|
||||
clear();
|
||||
val_.insert(val_.end(), begin, end);
|
||||
sort();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -239,7 +239,13 @@ namespace
|
|||
size_ = spot::length(f);
|
||||
if (has('h'))
|
||||
class_ = spot::mp_class(f);
|
||||
return format(format_);
|
||||
auto& res = format(format_);
|
||||
// Make sure we do not store the formula until the next one is
|
||||
// printed, as the order in which APs are registered may
|
||||
// influence the automata output.
|
||||
fl_ = nullptr;
|
||||
ap_.clear();
|
||||
return res;
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue