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