Skip to content

Commit 1ffb72f

Browse files
authored
replaced global emptyString used for const reference results with local instances (#7250)
1 parent e7fb594 commit 1ffb72f

File tree

7 files changed

+25
-14
lines changed

7 files changed

+25
-14
lines changed

lib/library.cpp

+8-6
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ struct Library::LibraryData
143143
std::unordered_set<std::string> mEntrypoints;
144144
};
145145

146+
const std::string Library::mEmptyString;
147+
146148
Library::Library()
147149
: mData(new LibraryData())
148150
{}
@@ -1588,9 +1590,9 @@ Library::UseRetValType Library::getUseRetValType(const Token *ftok) const
15881590
const std::string& Library::returnValue(const Token *ftok) const
15891591
{
15901592
if (isNotLibraryFunction(ftok))
1591-
return emptyString;
1593+
return mEmptyString;
15921594
const auto it = utils::as_const(mData->mReturnValue).find(getFunctionName(ftok));
1593-
return it != mData->mReturnValue.cend() ? it->second : emptyString;
1595+
return it != mData->mReturnValue.cend() ? it->second : mEmptyString;
15941596
}
15951597

15961598
const std::string& Library::returnValueType(const Token *ftok) const
@@ -1601,10 +1603,10 @@ const std::string& Library::returnValueType(const Token *ftok) const
16011603
if (contTok->valueType() && contTok->valueType()->container)
16021604
return contTok->valueType()->container->getReturnType(ftok->str());
16031605
}
1604-
return emptyString;
1606+
return mEmptyString;
16051607
}
16061608
const auto it = utils::as_const(mData->mReturnValueType).find(getFunctionName(ftok));
1607-
return it != mData->mReturnValueType.cend() ? it->second : emptyString;
1609+
return it != mData->mReturnValueType.cend() ? it->second : mEmptyString;
16081610
}
16091611

16101612
int Library::returnValueContainer(const Token *ftok) const
@@ -1794,7 +1796,7 @@ const std::string& Library::blockstart(const std::string &file) const
17941796
if (map_it != mData->mExecutableBlocks.end()) {
17951797
return map_it->second.start();
17961798
}
1797-
return emptyString;
1799+
return mEmptyString;
17981800
}
17991801

18001802
const std::string& Library::blockend(const std::string &file) const
@@ -1805,7 +1807,7 @@ const std::string& Library::blockend(const std::string &file) const
18051807
if (map_it != mData->mExecutableBlocks.end()) {
18061808
return map_it->second.end();
18071809
}
1808-
return emptyString;
1810+
return mEmptyString;
18091811
}
18101812

18111813
bool Library::iskeyword(const std::string &file, const std::string &keyword) const

lib/library.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ namespace tinyxml2 {
5252
class CPPCHECKLIB Library {
5353
friend struct LibraryHelper; // for testing
5454

55+
static const std::string mEmptyString;
56+
5557
public:
5658
Library();
5759
~Library();
@@ -252,7 +254,7 @@ class CPPCHECKLIB Library {
252254

253255
const std::string& getReturnType(const std::string& function) const {
254256
const auto i = utils::as_const(functions).find(function);
255-
return (i != functions.end()) ? i->second.returnType : emptyString;
257+
return (i != functions.end()) ? i->second.returnType : mEmptyString;
256258
}
257259

258260
static Yield yieldFrom(const std::string& yieldName);
@@ -348,7 +350,7 @@ class CPPCHECKLIB Library {
348350

349351
const std::string& validarg(const Token *ftok, int argnr) const {
350352
const ArgumentChecks *arg = getarg(ftok, argnr);
351-
return arg ? arg->valid : emptyString;
353+
return arg ? arg->valid : mEmptyString;
352354
}
353355

354356
const ArgumentChecks::IteratorInfo *getArgIteratorInfo(const Token *ftok, int argnr) const {

lib/symboldatabase.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,8 @@ class CPPCHECKLIB Type {
125125
std::string name() const;
126126

127127
const std::string& type() const {
128-
return classDef ? classDef->str() : emptyString;
128+
static const std::string s_empty_string;
129+
return classDef ? classDef->str() : s_empty_string;
129130
}
130131

131132
bool isClassType() const;
@@ -294,7 +295,8 @@ class CPPCHECKLIB Variable {
294295
if (mNameToken)
295296
return mNameToken->str();
296297

297-
return emptyString;
298+
static const std::string s_empty_string;
299+
return s_empty_string;
298300
}
299301

300302
/**

lib/token.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ namespace {
5656
}
5757

5858
const std::list<ValueFlow::Value> TokenImpl::mEmptyValueList;
59+
const std::string Token::mEmptyString;
5960

6061
Token::Token(TokensFrontBack &tokensFrontBack)
6162
: mTokensFrontBack(tokensFrontBack)

lib/token.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ class CPPCHECKLIB Token {
167167
private:
168168
TokensFrontBack& mTokensFrontBack;
169169

170+
static const std::string mEmptyString;
171+
170172
public:
171173
Token(const Token &) = delete;
172174
Token& operator=(const Token &) = delete;
@@ -256,7 +258,7 @@ class CPPCHECKLIB Token {
256258
const std::string &strAt(int index) const
257259
{
258260
const Token *tok = this->tokAt(index);
259-
return tok ? tok->mStr : emptyString;
261+
return tok ? tok->mStr : mEmptyString;
260262
}
261263

262264
/**
@@ -1272,7 +1274,7 @@ class CPPCHECKLIB Token {
12721274
* @return the original name.
12731275
*/
12741276
const std::string & originalName() const {
1275-
return mImpl->mOriginalName ? *mImpl->mOriginalName : emptyString;
1277+
return mImpl->mOriginalName ? *mImpl->mOriginalName : mEmptyString;
12761278
}
12771279

12781280
const std::list<ValueFlow::Value>& values() const {

lib/tokenlist.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ TokenList::~TokenList()
7777
const std::string& TokenList::getSourceFilePath() const
7878
{
7979
if (getFiles().empty()) {
80-
return emptyString;
80+
static const std::string s_empty_string;
81+
return s_empty_string;
8182
}
8283
return getFiles()[0];
8384
}

lib/vf_analyzers.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,8 @@ struct ValueFlowAnalyzer : Analyzer {
435435
{"^=", "^="}};
436436
auto it = lookup.find(assign);
437437
if (it == lookup.end()) {
438-
return emptyString;
438+
static const std::string s_empty_string;
439+
return s_empty_string;
439440
}
440441
return it->second;
441442
}

0 commit comments

Comments
 (0)