]> granicus.if.org Git - clang/commitdiff
Add missing "classof" methods to NonNullAttr, fixing a heisencrash.
authorTed Kremenek <kremenek@apple.com>
Tue, 5 Aug 2008 21:29:52 +0000 (21:29 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 5 Aug 2008 21:29:52 +0000 (21:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54373 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Attr.h

index 71f981bd50cfefc48a729b96ff65c4582aa8b22d..54f1714715c0a2e6c4d0717925b0ceeef2cd46a7 100644 (file)
@@ -231,17 +231,15 @@ class NonNullAttr : public Attr {
   unsigned* ArgNums;
   unsigned Size;
 public:
-  NonNullAttr(unsigned* arg_nums = 0, unsigned size = 0) : Attr(NonNull) {
+  NonNullAttr(unsigned* arg_nums = 0, unsigned size = 0) : Attr(NonNull),
+    ArgNums(0), Size(0) {
+  
     if (size) {
       assert (arg_nums);
       ArgNums = new unsigned[size];
       Size = size;
       memcpy(ArgNums, arg_nums, sizeof(*ArgNums)*size);
     }
-    else {
-      ArgNums = 0;
-      Size = 0;
-    }    
   }
   
   virtual ~NonNullAttr() {
@@ -251,6 +249,9 @@ public:
   bool isNonNull(unsigned arg) const {
     return ArgNums ? std::binary_search(ArgNums, ArgNums+Size, arg) : true;
   }  
+  
+  static bool classof(const Attr *A) { return A->getKind() == NonNull; }
+  static bool classof(const NonNullAttr *A) { return true; }
 };
 
 class FormatAttr : public Attr {