fix unpaired copy-ctor/op= reported by PVS-Stydio

For #192.

* bin/common_trans.cc, bin/common_trans.hh, spot/twa/acc.hh:
Add an operator= in addition to the copy constructor.
* spot/twaalgos/ltl2tgba_fm.cc: Use the default constructor.
* spot/ta/taproduct.cc, spot/ta/taproduct.hh: Delete an unused copy
constructor.
This commit is contained in:
Alexandre Duret-Lutz 2016-10-28 22:41:41 +02:00
parent 63818a3e69
commit d0112a7b8a
6 changed files with 27 additions and 17 deletions

View file

@ -133,10 +133,22 @@ translator_spec::translator_spec(const char* spec)
translator_spec::translator_spec(const translator_spec& other)
: spec(other.spec), cmd(other.cmd), name(other.name)
{
if (name != spec)
name = strdup(name);
if (cmd != spec)
cmd = strdup(cmd);
if (name != spec)
name = strdup(name);
}
translator_spec& translator_spec::operator=(const translator_spec& other)
{
spec = other.spec;
cmd = other.cmd;
if (cmd != spec)
cmd = strdup(cmd);
name = other.name;
if (name != spec)
name = strdup(name);
return *this;
}
translator_spec::~translator_spec()

View file

@ -1,5 +1,5 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2015 Laboratoire de Recherche et Développement de
// Copyright (C) 2015, 2016 Laboratoire de Recherche et Développement de
// l'Epita (LRDE).
//
// This file is part of Spot, a model checking library.
@ -45,6 +45,7 @@ struct translator_spec
translator_spec(const char* spec);
translator_spec(const translator_spec& other);
translator_spec& operator=(const translator_spec& other);
~translator_spec();
};

View file

@ -28,12 +28,6 @@ namespace spot
////////////////////////////////////////////////////////////
// state_ta_product
state_ta_product::state_ta_product(const state_ta_product& o) :
state(), ta_state_(o.get_ta_state()), kripke_state_(
o.get_kripke_state()->clone())
{
}
state_ta_product::~state_ta_product()
{
//see ta_product::free_state() method
@ -61,7 +55,7 @@ namespace spot
state_ta_product*
state_ta_product::clone() const
{
return new state_ta_product(*this);
return new state_ta_product(ta_state_, kripke_state_);
}
////////////////////////////////////////////////////////////

View file

@ -41,8 +41,7 @@ namespace spot
{
}
/// Copy constructor
state_ta_product(const state_ta_product& o);
state_ta_product(const state_ta_product& o) = delete;
virtual
~state_ta_product();

View file

@ -950,6 +950,15 @@ namespace spot
{
}
acc_cond& operator=(const acc_cond& o)
{
num_ = o.num_;
all_ = o.all_;
code_ = o.code_;
uses_fin_acceptance_ = o.uses_fin_acceptance_;
return *this;
}
~acc_cond()
{
}

View file

@ -1856,11 +1856,6 @@ namespace spot
{
}
transition(const transition& other)
: dest(other.dest), prom(other.prom), cond(other.cond)
{
}
bool operator<(const transition& other) const
{
if (dest < other.dest)