summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprObjC.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-04-20 18:19:55 +0000
committerDouglas Gregor <dgregor@apple.com>2011-04-20 18:19:55 +0000
commitd645931066c14bea5abf27935e73a32f0635ca54 (patch)
tree1e8105d5f8c4373dc195ba6442056a5a6833719c /clang/lib/Sema/SemaExprObjC.cpp
parent0e34c1dfac5f55d58cf16197b3e87f49089a5339 (diff)
downloadbcm5719-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.cpp7
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()) {
OpenPOWER on IntegriCloud