Symbol database: fixed corruptions. ticket: #2468
This commit is contained in:
parent
86e6822264
commit
2a3cce5001
|
@ -217,11 +217,13 @@ SymbolDatabase::SymbolDatabase(const Tokenizer *tokenizer, const Settings *setti
|
||||||
function.isPure = true;
|
function.isPure = true;
|
||||||
|
|
||||||
// count the number of constructors
|
// count the number of constructors
|
||||||
if (function.type == Function::eConstructor || function.type == Function::eCopyConstructor)
|
if (function.type == Function::eConstructor ||
|
||||||
|
function.type == Function::eCopyConstructor)
|
||||||
scope->numConstructors++;
|
scope->numConstructors++;
|
||||||
|
|
||||||
// assume implementation is inline (definition and implementation same)
|
// assume implementation is inline (definition and implementation same)
|
||||||
function.token = function.tokenDef;
|
function.token = function.tokenDef;
|
||||||
|
function.arg = function.argDef;
|
||||||
|
|
||||||
// out of line function
|
// out of line function
|
||||||
if (Token::Match(end, ") const| ;") ||
|
if (Token::Match(end, ") const| ;") ||
|
||||||
|
@ -238,7 +240,6 @@ SymbolDatabase::SymbolDatabase(const Tokenizer *tokenizer, const Settings *setti
|
||||||
{
|
{
|
||||||
function.isInline = true;
|
function.isInline = true;
|
||||||
function.hasBody = true;
|
function.hasBody = true;
|
||||||
function.arg = function.argDef;
|
|
||||||
|
|
||||||
scope->functionList.push_back(function);
|
scope->functionList.push_back(function);
|
||||||
|
|
||||||
|
@ -831,6 +832,7 @@ void SymbolDatabase::addNewFunction(Scope **scope, const Token **tok)
|
||||||
// syntax error?
|
// syntax error?
|
||||||
if (!new_scope->classEnd)
|
if (!new_scope->classEnd)
|
||||||
{
|
{
|
||||||
|
(*scope)->nestedList.pop_back();
|
||||||
delete new_scope;
|
delete new_scope;
|
||||||
while (tok1->next())
|
while (tok1->next())
|
||||||
tok1 = tok1->next();
|
tok1 = tok1->next();
|
||||||
|
@ -848,6 +850,7 @@ void SymbolDatabase::addNewFunction(Scope **scope, const Token **tok)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
(*scope)->nestedList.pop_back();
|
||||||
delete new_scope;
|
delete new_scope;
|
||||||
*scope = NULL;
|
*scope = NULL;
|
||||||
*tok = NULL;
|
*tok = NULL;
|
||||||
|
|
Loading…
Reference in New Issue