Make Singleton<Integer> static with function scope (Issue 310)

This may not fix the issue. Drilling into the issue from the web-based dashboard, Coverity is targeting:

    1. noescape: CryptoPP::Integer::operator =(CryptoPP::Integer const &) does not free or save its parameter t.

3049 Integer& Integer::operator=(const Integer& t)
3050 {
3051   if (this != &t)
3052   {
3053     if (reg.size() != t.reg.size() || t.reg[t.reg.size()/2] == 0)
3054       reg.New(RoundupSize(t.WordCount()));
3055     CopyWords(reg, t.reg, reg.size());
3056     sign = t.sign;
3057   }
3058   return *this;
3059 }
pull/326/head
Jeffrey Walton 2016-09-29 14:31:54 -04:00
parent f61b9eda2e
commit afe391571b
No known key found for this signature in database
GPG Key ID: B36AB348921B1838
2 changed files with 7 additions and 4 deletions

View File

@ -20,7 +20,7 @@ CXXFLAGS="-DNDEBUG -g2 -O3 -march=i686 -msse -msse2 -msse3 -mssse3 -mno-aes" cov
tar czvf cryptopp.tgz cov-int
set CRYPTOPP_COVERITY_TOKEN=XXXXXXXXXXXXXXXX
CRYPTOPP_COVERITY_TOKEN=XXXXXXXXXXXXXXXX
COVERITY_SCAN_NAME="Rijndael-AliasedTable-SSE2-Linux-i686"
curl

View File

@ -3013,17 +3013,20 @@ struct NewInteger
const Integer &Integer::Zero()
{
return Singleton<Integer>().Ref();
static const Integer& s_zero = Singleton<Integer>().Ref();
return s_zero;
}
const Integer &Integer::One()
{
return Singleton<Integer, NewInteger<1> >().Ref();
static const Integer& s_one = Singleton<Integer, NewInteger<1> >().Ref();
return s_one;
}
const Integer &Integer::Two()
{
return Singleton<Integer, NewInteger<2> >().Ref();
static const Integer& s_two = Singleton<Integer, NewInteger<2> >().Ref();
return s_two;
}
bool Integer::operator!() const