Added self-assignment guards or comment indicating why the check is not needed

pull/35/head
Jeffrey Walton 2015-07-30 13:24:37 -04:00
parent 77206baf56
commit 8293570bd4
5 changed files with 13 additions and 8 deletions

View File

@ -61,6 +61,7 @@ AlgorithmParameters::AlgorithmParameters(const AlgorithmParameters &x)
AlgorithmParameters & AlgorithmParameters::operator=(const AlgorithmParameters &x)
{
// Should this be guarded for operations on itself??? This class befuddles me at times...
m_next.reset(const_cast<AlgorithmParameters &>(x).m_next.release());
return *this;
}

View File

@ -237,9 +237,11 @@ const EC2N::Point& EC2N::Double(const Point &P) const
/*
EcPrecomputation<EC2N>& EcPrecomputation<EC2N>::operator=(const EcPrecomputation<EC2N> &rhs)
{
m_ec = rhs.m_ec;
m_ep = rhs.m_ep;
m_ep.m_group = m_ec.get();
if (this != &rhs)
{
DL_GroupPrecomputation::operator=(rhs);
m_ec = rhs.m_ec;
}
return *this;
}

View File

@ -211,6 +211,7 @@ unsigned int PolynomialMod2::Parity() const
PolynomialMod2& PolynomialMod2::operator=(const PolynomialMod2& t)
{
// Assign guards for self-assignment
reg.Assign(t.reg);
return *this;
}

View File

@ -428,17 +428,17 @@ byte * ByteQueue::CreatePutSpace(size_t &size)
ByteQueue & ByteQueue::operator=(const ByteQueue &rhs)
{
if (this == &rhs) return *this;
Destroy();
CopyFrom(rhs);
if (this != &rhs)
{
Destroy();
CopyFrom(rhs);
}
return *this;
}
bool ByteQueue::operator==(const ByteQueue &rhs) const
{
const lword currentSize = CurrentSize();
if (currentSize != rhs.CurrentSize())
return false;

View File

@ -331,6 +331,7 @@ public:
SecBlock<T, A>& operator=(const SecBlock<T, A> &t)
{
// Assign guards for self-assignment
Assign(t);
return *this;
}