Commit 15fdac60 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz
Browse files

acc: strengthen is_generalized_rabin() and is_generalized_streett()

* spot/twa/acc.cc: These functions were segfaulting on acceptance
conditions such as "Acceptance: 3 t" or "Acceptance: 3 f".
The issue was revealed on branch "next" by the change that print_dot()
display the acceptance condition by default, but we want the fix on
master as well.
* NEWS: Mention the issue.
parent 057e67e7
...@@ -11,6 +11,12 @@ New in spot 2.5.1.dev (not yet released) ...@@ -11,6 +11,12 @@ New in spot 2.5.1.dev (not yet released)
update an external structure that references states of the twa update an external structure that references states of the twa
that we want to purge. that we want to purge.
Bugs fixed:
- acc_cond::is_generalized_rabin() and
acc_cond::is_generalized_streett() would segfault on weird
acceptance conditions such as "3 t" or "3 f".
New in spot 2.5.1 (2018-02-20) New in spot 2.5.1 (2018-02-20)
Library: Library:
......
...@@ -660,7 +660,10 @@ namespace spot ...@@ -660,7 +660,10 @@ namespace spot
pairs.resize(num_); pairs.resize(num_);
return true; return true;
} }
if (code_.is_t() // "Acceptance: 0 f" is caught by is_generalized_rabin() above.
// Therefore is_f() below catches "Acceptance: n f" with n>0.
if (code_.is_f()
|| code_.is_t()
|| code_.back().sub.op != acc_op::Or) || code_.back().sub.op != acc_op::Or)
return false; return false;
...@@ -741,7 +744,10 @@ namespace spot ...@@ -741,7 +744,10 @@ namespace spot
pairs.resize(num_); pairs.resize(num_);
return true; return true;
} }
if (code_.is_f() // "Acceptance: 0 t" is caught by is_generalized_buchi() above.
// Therefore is_t() below catches "Acceptance: n t" with n>0.
if (code_.is_t()
|| code_.is_f()
|| code_.back().sub.op != acc_op::And) || code_.back().sub.op != acc_op::And)
return false; return false;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment