diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-01-22 09:44:40 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-01-22 09:54:00 +0100 |
commit | 007d76aadabe93d46394796dd2ad85aa667178b3 (patch) | |
tree | a7e6c6876d140540057f2ded342bc3daf9a81cc6 /src/shared/cplusplus | |
parent | 800f4babc68f7d44d62da9f38ad51079fc1c8db6 (diff) | |
download | qt-creator-007d76aadabe93d46394796dd2ad85aa667178b3.tar.gz |
Fixed bug in ObjC class field parsing which could result in an invalid pointer in the AST.
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r-- | src/shared/cplusplus/Parser.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index c906a123f8..69ff99708f 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -5142,8 +5142,6 @@ bool Parser::parseObjCPropertyDeclaration(DeclarationAST *&node, SpecifierListAS if (!parseObjCPropertyAttribute(last->value)) { _translationUnit->error(_tokenIndex, "expected token `%s' got `%s'", Token::name(T_IDENTIFIER), tok().spell()); - while (LA() != T_RPAREN) - consumeToken(); break; } } @@ -5152,9 +5150,11 @@ bool Parser::parseObjCPropertyDeclaration(DeclarationAST *&node, SpecifierListAS match(T_RPAREN, &(ast->rparen_token)); } - parseSimpleDeclaration(ast->simple_declaration, /*accept-struct-declarators = */ true); + if (parseSimpleDeclaration(ast->simple_declaration, /*accept-struct-declarators = */ true)) + node = ast; + else + _translationUnit->error(_tokenIndex, "expected a simple declaration"); - node = ast; return true; } |