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.

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

Reply via email to