summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseDecl.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-08-16 17:58:53 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-08-16 17:58:53 +0000
commit055068df4a48e492ddcfd8ff7c47cd007ab15cb0 (patch)
treec9af1ed42d6a8fd6af42e649ec2490cd35ca498e /clang/lib/Parse/ParseDecl.cpp
parenta573c414356567618397e324b83c9b0ec9ce10c4 (diff)
downloadbcm5719-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/ParseDecl.cpp')
-rw-r--r--clang/lib/Parse/ParseDecl.cpp5
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
OpenPOWER on IntegriCloud