diff options
author | Steve Naroff <snaroff@apple.com> | 2009-04-07 22:56:58 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2009-04-07 22:56:58 +0000 |
commit | 65a0089eb786cb8c3da95bb5dda3cf9fe033f97c (patch) | |
tree | 302f027875ac1713abf04221a4bcf763780bb185 /clang/lib/Parse/ParseObjc.cpp | |
parent | ea10ab668f8b6cdaa17723b37af32f1a7cb36e46 (diff) | |
download | bcm5719-llvm-65a0089eb786cb8c3da95bb5dda3cf9fe033f97c.tar.gz bcm5719-llvm-65a0089eb786cb8c3da95bb5dda3cf9fe033f97c.zip |
Fix <rdar://problem/6764172> [sema] crash on invalid.
llvm-svn: 68568
Diffstat (limited to 'clang/lib/Parse/ParseObjc.cpp')
-rw-r--r-- | clang/lib/Parse/ParseObjc.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp index 05c919cbea9..8a942c77027 100644 --- a/clang/lib/Parse/ParseObjc.cpp +++ b/clang/lib/Parse/ParseObjc.cpp @@ -1294,8 +1294,14 @@ Parser::OwningStmtResult Parser::ParseObjCTryStmt(SourceLocation atLoc) { FirstPart = Actions.ActOnParamDeclarator(CurScope, ParmDecl); } else ConsumeToken(); // consume '...' - SourceLocation RParenLoc = ConsumeParen(); + + SourceLocation RParenLoc; + if (Tok.is(tok::r_paren)) + RParenLoc = ConsumeParen(); + else // Skip over garbage, until we get to ')'. Eat the ')'. + SkipUntil(tok::r_paren, true, false); + OwningStmtResult CatchBody(Actions, true); if (Tok.is(tok::l_brace)) CatchBody = ParseCompoundStatementBody(); |