On Apr 5, 2010, at 3:32 PM, Ted Kremenek wrote:


On Mar 30, 2010, at 3:40 PM, Fariborz Jahanian wrote:

Author: fjahanian
Date: Tue Mar 30 17:40:11 2010
New Revision: 99951

URL: http://llvm.org/viewvc/llvm-project?rev=99951&view=rev
Log:
Recognize __attribute__((NSObject)) directly applied
on retain properties. (radar 7809468).

Modified:
   cfe/trunk/lib/Sema/Sema.h
   cfe/trunk/lib/Sema/SemaObjCProperty.cpp
   cfe/trunk/test/SemaObjC/nsobject-attribute.m


<SNIP>


-void Sema::CheckObjCPropertyAttributes(QualType PropertyTy,
+void Sema::CheckObjCPropertyAttributes(DeclPtrTy PropertyPtrTy,
                                       SourceLocation Loc,
                                       unsigned &Attributes) {
  // FIXME: Improve the reported location.
+  Decl *PDecl = PropertyPtrTy.getAs<Decl>();
+ ObjCPropertyDecl *PropertyDecl = dyn_cast_or_null<ObjCPropertyDecl>(PDecl);
+  QualType PropertyTy = PropertyDecl->getType();

Hi Fariborz,

This doesn't quite look right. On the second line there is 'dyn_cast_or_null' and on the third line PropetyDecl gets dereferenced without checking if it is null. Is it always the case that 'PDecl' will be both non-null and a ObjCProperyDecl? If that is the case, we should be using 'cast', not 'dyn_cast'. If 'PDecl' could be null we should probably check for that up front and then bail out of the method before even doing the cast to ObjCPropetyDecl*. Otherwise, this looks like a potential crash.

No it is not right. We should bail out if is it null, or if we do not see an ObjCPropertyDecl passed down.
(which is caused by detection of error in property declaration earlier).

- fariborz




Ted

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to