diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-04-20 18:19:55 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-04-20 18:19:55 +0000 |
commit | d645931066c14bea5abf27935e73a32f0635ca54 (patch) | |
tree | 1e8105d5f8c4373dc195ba6442056a5a6833719c /clang/lib/Sema/SemaExprObjC.cpp | |
parent | 0e34c1dfac5f55d58cf16197b3e87f49089a5339 (diff) | |
download | bcm5719-llvm-d645931066c14bea5abf27935e73a32f0635ca54.tar.gz bcm5719-llvm-d645931066c14bea5abf27935e73a32f0635ca54.zip |
Fix a crash-on-invalid involving non-identifier names in a member
access expression that appears to be a property reference. Fixes
<rdar://problem/8985943>.
llvm-svn: 129865
Diffstat (limited to 'clang/lib/Sema/SemaExprObjC.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprObjC.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index cacc846028a..04f5e32bda7 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/lib/Sema/SemaExprObjC.cpp @@ -426,6 +426,13 @@ HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT, bool Super) { const ObjCInterfaceType *IFaceT = OPT->getInterfaceType(); ObjCInterfaceDecl *IFace = IFaceT->getDecl(); + + if (MemberName.getNameKind() != DeclarationName::Identifier) { + Diag(MemberLoc, diag::err_invalid_property_name) + << MemberName << QualType(OPT, 0); + return ExprError(); + } + IdentifierInfo *Member = MemberName.getAsIdentifierInfo(); if (IFace->isForwardDecl()) { |