From 1aa1941889e08cf84e9fa392f1697522ab9a7ec6 Mon Sep 17 00:00:00 2001 From: Steve Naroff Date: Thu, 17 Jan 2008 00:36:28 +0000 Subject: Declarator::clear(): Null out variable after it's been deleted. This avoids a double free (which is good:-) Bug submitted by Eli. llvm-svn: 46105 --- clang/include/clang/Parse/DeclSpec.h | 1 + clang/test/Sema/declspec.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/clang/include/clang/Parse/DeclSpec.h b/clang/include/clang/Parse/DeclSpec.h index bf7920f..307959f 100644 --- a/clang/include/clang/Parse/DeclSpec.h +++ b/clang/include/clang/Parse/DeclSpec.h @@ -566,6 +566,7 @@ public: } DeclTypeInfo.clear(); delete AttrList; + AttrList = 0; } /// mayOmitIdentifier - Return true if the identifier is either optional or diff --git a/clang/test/Sema/declspec.c b/clang/test/Sema/declspec.c index d9e02ec..05f492d 100644 --- a/clang/test/Sema/declspec.c +++ b/clang/test/Sema/declspec.c @@ -3,3 +3,6 @@ typedef char T[4]; T foo(int n, int m) { } // expected-error {{cannot return array or function}} +void foof(const char *, ...) __attribute__((__format__(__printf__, 1, 2))), barf (void); + + -- cgit v1.1