forked from qt-creator/qt-creator
Fixed possible crash in CheckName
Done with: Erik Verbruggen
This commit is contained in:
@@ -378,12 +378,14 @@ bool CheckName::visit(TemplateIdAST *ast)
|
||||
|
||||
bool CheckName::visit(ObjCSelectorWithoutArgumentsAST *ast)
|
||||
{
|
||||
std::vector<Name *> names;
|
||||
Identifier *id = control()->findOrInsertIdentifier(spell(ast->name_token));
|
||||
NameId *nameId = control()->nameId(id);
|
||||
names.push_back(nameId);
|
||||
_name = control()->selectorNameId(&names[0], names.size(), false);
|
||||
ast->selector_name = _name;
|
||||
if (ast->name_token) {
|
||||
std::vector<Name *> names;
|
||||
Identifier *id = control()->findOrInsertIdentifier(spell(ast->name_token));
|
||||
NameId *nameId = control()->nameId(id);
|
||||
names.push_back(nameId);
|
||||
_name = control()->selectorNameId(&names[0], names.size(), false);
|
||||
ast->selector_name = _name;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -392,9 +394,14 @@ bool CheckName::visit(ObjCSelectorWithArgumentsAST *ast)
|
||||
{
|
||||
std::vector<Name *> names;
|
||||
for (ObjCSelectorArgumentListAST *it = ast->selector_argument_list; it; it = it->next) {
|
||||
Identifier *id = control()->findOrInsertIdentifier(spell(it->value->name_token));
|
||||
NameId *nameId = control()->nameId(id);
|
||||
names.push_back(nameId);
|
||||
if (it->value->name_token) {
|
||||
Identifier *id = control()->findOrInsertIdentifier(spell(it->value->name_token));
|
||||
NameId *nameId = control()->nameId(id);
|
||||
names.push_back(nameId);
|
||||
} else {
|
||||
// we have an incomplete name due, probably due to error recovery. So, back out completely
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!names.empty()) {
|
||||
|
||||
Reference in New Issue
Block a user