diff --git a/NEWS b/NEWS index ad7afe992..4830d068b 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,9 @@ New in spot 2.9.5.dev (not yet released) - Nothing yet. + Bugs fixed: + + - twa_graph::merge_edges() could fail to merge two transitions if the + destination transition was the first of the automaton. (Issue #441) New in spot 2.9.5 (2020-11-19) diff --git a/spot/twa/twagraph.cc b/spot/twa/twagraph.cc index 3102ea23d..fb71c099e 100644 --- a/spot/twa/twagraph.cc +++ b/spot/twa/twagraph.cc @@ -195,7 +195,8 @@ namespace spot trans.resize(out); tend = out; - out = in = 2; + out = 1; + in = 2; // FIXME: We could should also merge edges when using // fin_acceptance, but the rule for Fin sets are different than diff --git a/tests/Makefile.am b/tests/Makefile.am index 95ac98c1e..63d58db16 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -391,6 +391,7 @@ TESTS_python = \ python/ltlparse.py \ python/ltlsimple.py \ python/merge.py \ + python/mergedge.py \ python/minato.py \ python/misc-ec.py \ python/optionmap.py \ diff --git a/tests/python/mergedge.py b/tests/python/mergedge.py new file mode 100644 index 000000000..e6a2e0008 --- /dev/null +++ b/tests/python/mergedge.py @@ -0,0 +1,28 @@ +#!/usr/bin/python3 +# -*- mode: python; coding: utf-8 -*- +# Copyright (C) 2020 Laboratoire de Recherche et Développement de +# l'EPITA. +# +# This file is part of Spot, a model checking library. +# +# Spot is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Spot is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +# License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +import spot + +aut = spot.automaton("""HOA: v1 States: 1 Start: 0 AP: 1 "a" +Acceptance: 1 Inf(0) --BODY-- State: 0 [0] 0 [0] 0 {0} --END--""") +assert aut.num_edges() == 2 +aut.merge_edges() +assert aut.num_edges() == 1