diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2010-08-16 17:58:53 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-08-16 17:58:53 +0000 |
| commit | 055068df4a48e492ddcfd8ff7c47cd007ab15cb0 (patch) | |
| tree | c9af1ed42d6a8fd6af42e649ec2490cd35ca498e /clang/lib/Parse | |
| parent | a573c414356567618397e324b83c9b0ec9ce10c4 (diff) | |
| download | bcm5719-llvm-055068df4a48e492ddcfd8ff7c47cd007ab15cb0.tar.gz bcm5719-llvm-055068df4a48e492ddcfd8ff7c47cd007ab15cb0.zip | |
Fix a crash when parsing malformed out-of-line member function
definition. radar 8307865.
llvm-svn: 111163
Diffstat (limited to 'clang/lib/Parse')
| -rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index b0d9da58457..7149d4dc302 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -2727,7 +2727,10 @@ void Parser::ParseDirectDeclarator(Declarator &D) { if (Actions.ShouldEnterDeclaratorScope(getCurScope(), D.getCXXScopeSpec())) // Change the declaration context for name lookup, until this function // is exited (and the declarator has been parsed). - DeclScopeObj.EnterDeclaratorScope(); + // If there was an error parsing parenthesized declarator, declarator + // scope may have been enterred before. Don't do it again. + if (!D.isInvalidType()) + DeclScopeObj.EnterDeclaratorScope(); } } else if (D.mayOmitIdentifier()) { // This could be something simple like "int" (in which case the declarator |

