Declarator::clear(): Null out variable after it's been deleted.

This avoids a double free (which is good:-)

Bug submitted by Eli.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46105 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/Parse/DeclSpec.h b/include/clang/Parse/DeclSpec.h
index bf7920f..307959f 100644
--- a/include/clang/Parse/DeclSpec.h
+++ b/include/clang/Parse/DeclSpec.h
@@ -566,6 +566,7 @@
     }
     DeclTypeInfo.clear();
     delete AttrList;
+    AttrList = 0;
   }
   
   /// mayOmitIdentifier - Return true if the identifier is either optional or
diff --git a/test/Sema/declspec.c b/test/Sema/declspec.c
index d9e02ec..05f492d 100644
--- a/test/Sema/declspec.c
+++ b/test/Sema/declspec.c
@@ -3,3 +3,6 @@
 
 T foo(int n, int m) {  }  // expected-error {{cannot return array or function}}
 
+void foof(const char *, ...) __attribute__((__format__(__printf__, 1, 2))), barf (void);
+
+