aboutsummaryrefslogtreecommitdiff
path: root/lib/StaticAnalyzer/Core/ObjCMessage.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-10-06 20:53:28 +0000
committerTed Kremenek <kremenek@apple.com>2011-10-06 20:53:28 +0000
commitc80850353f4051f36be9f5be9738cf877406311a (patch)
tree091e49bbb4fcd478c3a832e4c146f0e0cd99e82a /lib/StaticAnalyzer/Core/ObjCMessage.cpp
parent8052a4f1f62afb2a20fd453fa465fb4a11cfc5c6 (diff)
[static analyzer] Fix crash in LiveVariables and Environment::getSVal() when analyzing C++ pointer-to-member calls. Fixes <rdar://problem/10243398>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141312 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Core/ObjCMessage.cpp')
-rw-r--r--lib/StaticAnalyzer/Core/ObjCMessage.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/StaticAnalyzer/Core/ObjCMessage.cpp b/lib/StaticAnalyzer/Core/ObjCMessage.cpp
index 112c468210..0974fe877a 100644
--- a/lib/StaticAnalyzer/Core/ObjCMessage.cpp
+++ b/lib/StaticAnalyzer/Core/ObjCMessage.cpp
@@ -148,7 +148,13 @@ SVal CallOrObjCMessage::getCXXCallee() const {
const CallExpr *ActualCall = CallE.get<const CallExpr *>();
const Expr *callee =
cast<CXXMemberCallExpr>(ActualCall)->getImplicitObjectArgument();
- return State->getSVal(callee);
+
+ // FIXME: Will eventually need to cope with member pointers. This is
+ // a limitation in getImplicitObjectArgument().
+ if (!callee)
+ return UnknownVal();
+
+ return State->getSVal(callee);
}
SVal