relabel_here: make sure free_bddpair is called
* spot/twaalgos/relabel.cc (relabel_here): This function has multiple exit paths, and none of them were calling bdd_freepair. Use a unique_ptr to ensure that.
This commit is contained in:
parent
0ecc870a0e
commit
65bc67f300
1 changed files with 5 additions and 5 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
// -*- coding: utf-8 -*-
|
// -*- coding: utf-8 -*-
|
||||||
// Copyright (C) 2015-2018, 2020 Laboratoire de Recherche et
|
// Copyright (C) 2015-2018, 2020, 2022 Laboratoire de Recherche et
|
||||||
// Développement de l'Epita (LRDE).
|
// Développement de l'Epita (LRDE).
|
||||||
//
|
//
|
||||||
// This file is part of Spot, a model checking library.
|
// This file is part of Spot, a model checking library.
|
||||||
|
|
@ -26,7 +26,7 @@ namespace spot
|
||||||
void
|
void
|
||||||
relabel_here(twa_graph_ptr& aut, relabeling_map* relmap)
|
relabel_here(twa_graph_ptr& aut, relabeling_map* relmap)
|
||||||
{
|
{
|
||||||
bddPair* pairs = bdd_newpair();
|
std::unique_ptr<bddPair> pairs(bdd_newpair());
|
||||||
auto d = aut->get_dict();
|
auto d = aut->get_dict();
|
||||||
std::vector<int> vars;
|
std::vector<int> vars;
|
||||||
std::set<int> newvars;
|
std::set<int> newvars;
|
||||||
|
|
@ -53,7 +53,7 @@ namespace spot
|
||||||
{
|
{
|
||||||
int newv = aut->register_ap(p.second);
|
int newv = aut->register_ap(p.second);
|
||||||
newvars.insert(newv);
|
newvars.insert(newv);
|
||||||
bdd_setpair(pairs, oldv, newv);
|
bdd_setpair(pairs.get(), oldv, newv);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -64,7 +64,7 @@ namespace spot
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
bdd newb = formula_to_bdd(p.second, d, aut);
|
bdd newb = formula_to_bdd(p.second, d, aut);
|
||||||
bdd_setbddpair(pairs, oldv, newb);
|
bdd_setbddpair(pairs.get(), oldv, newb);
|
||||||
bool_subst = true;
|
bool_subst = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -75,7 +75,7 @@ namespace spot
|
||||||
static_cast<op_t>(bdd_veccompose) : static_cast<op_t>(bdd_replace);
|
static_cast<op_t>(bdd_veccompose) : static_cast<op_t>(bdd_replace);
|
||||||
for (auto& t: aut->edges())
|
for (auto& t: aut->edges())
|
||||||
{
|
{
|
||||||
bdd c = (*op)(t.cond, pairs);
|
bdd c = (*op)(t.cond, pairs.get());
|
||||||
t.cond = c;
|
t.cond = c;
|
||||||
if (c == bddfalse)
|
if (c == bddfalse)
|
||||||
need_cleanup = true;
|
need_cleanup = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue