From cf5d2c2b327bf2cedb4c0a72d6c82731a6beaed3 Mon Sep 17 00:00:00 2001 From: Alexandre Duret-Lutz Date: Fri, 3 Mar 2017 13:26:33 +0100 Subject: [PATCH] acc: make mark_t::operator bool() explicit This avoids a few conversion problems, and also made the bug of sbacc (fixed by 37fc948be4) obvious. Reported by Thomas Medioni. * spot/twa/acc.hh (mark_t::operator bool): Make it explicit. * spot/twaalgos/remfin.cc: Adjust. --- NEWS | 6 ++++++ spot/twa/acc.hh | 2 +- spot/twaalgos/remfin.cc | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index c5cff5310..42ad55dbc 100644 --- a/NEWS +++ b/NEWS @@ -30,6 +30,12 @@ New in spot 2.3.1.dev (not yet released) anymore and should be replaced by the newly-introduced --format=%x for consistency with tools producing automata. + Backward-incompatible changes: + + - spot::acc_cond::mark_t::operator bool() has been marked as + explicit. The implicit converion to bool (and, via bool, to int) + was a source of bugs. + New in spot 2.3.1 (2017-02-20) diff --git a/spot/twa/acc.hh b/spot/twa/acc.hh index 758ac476f..197804d3d 100644 --- a/spot/twa/acc.hh +++ b/spot/twa/acc.hh @@ -98,7 +98,7 @@ namespace spot return id >= o.id; } - operator bool() const + explicit operator bool() const { return id != 0; } diff --git a/spot/twaalgos/remfin.cc b/spot/twaalgos/remfin.cc index 87d8c90ef..d25c26205 100644 --- a/spot/twaalgos/remfin.cc +++ b/spot/twaalgos/remfin.cc @@ -260,7 +260,7 @@ namespace spot i -= f; for (auto s: states) { - bool acc = aut->state_acc_sets(s) & i; + bool acc{aut->state_acc_sets(s) & i}; for (auto& t: aut->out(s)) res->new_acc_edge(s, t.dst, t.cond, acc); } @@ -282,7 +282,7 @@ namespace spot acc_cond::mark_t acc = aut->state_acc_sets(s); if (acc.has(r)) continue; - bool jacc = acc & inf_alone; + bool jacc{acc & inf_alone}; bool cacc = fin_alone.has(r) || acc.has(r + 1); for (auto& t: aut->out(s)) { -- GitLab