* src/ltlvisit/clone.cc: Use reserve() for multop.

This commit is contained in:
Alexandre Duret-Lutz 2013-09-27 16:09:15 +02:00
parent 1f1feb935d
commit 2efe52fab0

View file

@ -1,7 +1,8 @@
// Copyright (C) 2009, 2010, 2012 Laboratoire de Recherche et Développement // -*- coding: utf-8 -*-
// de l'Epita (LRDE). // Copyright (C) 2009, 2010, 2012, 2013 Laboratoire de Recherche et
// Développement de l'Epita (LRDE).
// Copyright (C) 2003 Laboratoire d'Informatique de Paris 6 (LIP6), // Copyright (C) 2003 Laboratoire d'Informatique de Paris 6 (LIP6),
// département Systèmes Répartis Coopératifs (SRC), Université Pierre // département Systèmes Répartis Coopératifs (SRC), Université Pierre
// et Marie Curie. // et Marie Curie.
// //
// This file is part of Spot, a model checking library. // This file is part of Spot, a model checking library.
@ -77,7 +78,8 @@ namespace spot
clone_visitor::visit(const automatop* ao) clone_visitor::visit(const automatop* ao)
{ {
automatop::vec* res = new automatop::vec; automatop::vec* res = new automatop::vec;
for (unsigned i = 0; i < ao->size(); ++i) unsigned aos = ao->size();
for (unsigned i = 0; i < aos; ++i)
res->push_back(recurse(ao->nth(i))); res->push_back(recurse(ao->nth(i)));
result_ = automatop::instance(ao->get_nfa(), res, ao->is_negated()); result_ = automatop::instance(ao->get_nfa(), res, ao->is_negated());
} }
@ -87,6 +89,7 @@ namespace spot
{ {
multop::vec* res = new multop::vec; multop::vec* res = new multop::vec;
unsigned mos = mo->size(); unsigned mos = mo->size();
res->reserve(mos);
for (unsigned i = 0; i < mos; ++i) for (unsigned i = 0; i < mos; ++i)
res->push_back(recurse(mo->nth(i))); res->push_back(recurse(mo->nth(i)));
result_ = multop::instance(mo->op(), res); result_ = multop::instance(mo->op(), res);