From: Ted Kremenek Date: Tue, 5 Aug 2008 21:29:52 +0000 (+0000) Subject: Add missing "classof" methods to NonNullAttr, fixing a heisencrash. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=55b0c192e1ce00513a000f4c98bed7da5cf152b8;p=clang Add missing "classof" methods to NonNullAttr, fixing a heisencrash. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54373 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/Attr.h b/include/clang/AST/Attr.h index 71f981bd50..54f1714715 100644 --- a/include/clang/AST/Attr.h +++ b/include/clang/AST/Attr.h @@ -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 {