sbacc: fix sbacc producing complete automata marked as incomplete

Fixes #312, reported by František Blahoudek.

* spot/twaalgos/sbacc.cc: Detect the case were this can happen,
and fix it.
* tests/core/sbacc.test: New test case.
* NEWS: Mention the bug.
This commit is contained in:
Alexandre Duret-Lutz 2017-12-22 18:27:07 +01:00
parent 9ec7df670e
commit 95fd75940a
3 changed files with 29 additions and 0 deletions

View file

@ -168,6 +168,17 @@ namespace spot
}
}
res->merge_edges();
// If the automaton was marked as not complete, and we have
// ignored some unreachable state, then it is possible that the
// result becomes complete.
if (res->prop_complete().is_false())
for (unsigned i = 0; i < ns; ++i)
if (!si.reachable_state(i))
{
res->prop_complete(trival::maybe());
break;
}
return res;
}
}