diff --git a/ChangeLog b/ChangeLog index 6daabf8f2..f2131973f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-01-18 Damien Lefortier + + * src/tgbaalgos/ltl2taa.cc: Fix the previous patch. + 2010-01-18 Damien Lefortier * src/tgba/taatgba.cc, src/tgba/taatgba.hh: Fix memory issues diff --git a/src/tgbaalgos/ltl2taa.cc b/src/tgbaalgos/ltl2taa.cc index ea7d74ce2..447c9888d 100644 --- a/src/tgbaalgos/ltl2taa.cc +++ b/src/tgbaalgos/ltl2taa.cc @@ -231,9 +231,14 @@ namespace spot void visit(const multop* node) { + bool ok = true; std::vector vs; for (unsigned n = 0; n < node->size(); ++n) + { vs.push_back(recurse(node->nth(n))); + if (vs[n].succ_.empty()) // Handle 0 + ok = false; + } init_ = node; std::vector::iterator i; @@ -242,6 +247,8 @@ namespace spot { case multop::And: { + if (!ok) + return; std::vector p = all_n_tuples(vs); for (unsigned n = 0; n < p.size(); ++n) { @@ -397,9 +404,9 @@ namespace spot new language_containment_checker(&b, false, false, false, false); ltl2taa_visitor v(res, lcc, refined_rules); f2->accept(v); + taa_tgba* taa = v.result(); // Careful: before the destroy! f2->destroy(); delete lcc; - - return v.result(); + return taa; } }