]> granicus.if.org Git - clang/commitdiff
Fix crash caused by this:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 7 Nov 2008 13:01:22 +0000 (13:01 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 7 Nov 2008 13:01:22 +0000 (13:01 +0000)
void f() {
   int +; // crash here
}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58846 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDecl.cpp
test/Sema/init.c

index 3e4e2c5b2c156dcdb7a8b50685c2da33c94c5fd5..fd94c80d8b99f33055fdf409b9394843dc2880f1 100644 (file)
@@ -1639,6 +1639,10 @@ void Sema::AddInitializerToDecl(DeclTy *dcl, ExprTy *init) {
 void Sema::ActOnUninitializedDecl(DeclTy *dcl) {
   Decl *RealDecl = static_cast<Decl *>(dcl);
 
+  // If there is no declaration, there was an error parsing it. Just ignore it.
+  if (RealDecl == 0)
+    return;
+
   if (VarDecl *Var = dyn_cast<VarDecl>(RealDecl)) {
     QualType Type = Var->getType();
     // C++ [dcl.init.ref]p3:
index a078a2a96bc6ff5aec593757641b335e02def691..c08500834fb4e444f8202e520c1820d39ea1e74b 100644 (file)
@@ -16,6 +16,7 @@ int *h = &x;
 int test() {
 int a[10];
 int b[10] = a; // expected-error {{initialization with "{...}" expected}}
+int +; // expected-error {{expected identifier or '('}} expected-error {{declarator requires an identifier}} expected-error {{parse error}}
 }