]> granicus.if.org Git - clang/commitdiff
Fix buffer overrun when laying out synthesized ivars.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 8 Apr 2009 20:18:15 +0000 (20:18 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 8 Apr 2009 20:18:15 +0000 (20:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68634 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/ASTContext.cpp

index 307c0e4454afa65408d49b5dbf98605795ff0ba7..d056ed4cb70b15959349e14b6c4ea9006f72a749 100644 (file)
@@ -679,7 +679,8 @@ ASTContext::getASTObjCInterfaceLayout(const ObjCInterfaceDecl *D) {
   // Allocate and assign into ASTRecordLayouts here.  The "Entry" reference can
   // be invalidated (dangle) if the ASTRecordLayouts hashtable is inserted into.
   ASTRecordLayout *NewEntry = NULL;
-  unsigned FieldCount = D->ivar_size();
+  unsigned FieldCount = 
+    D->ivar_size() + std::distance(D->prop_begin(), D->prop_end());
   if (ObjCInterfaceDecl *SD = D->getSuperClass()) {
     FieldCount++;
     const ASTRecordLayout &SL = getASTObjCInterfaceLayout(SD);