summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2013-10-02 01:20:28 +0000
committerJordan Rose <jordan_rose@apple.com>2013-10-02 01:20:28 +0000
commit44e066c72adbabc4b71334c5dd0ac6426424122c (patch)
treeabe4a8de004408c2bbf21e9bd5fcc3cf4000ad95 /clang/lib
parent7aa695e0265727af08932d555d2303463eb8c17a (diff)
downloadbcm5719-llvm-44e066c72adbabc4b71334c5dd0ac6426424122c.tar.gz
bcm5719-llvm-44e066c72adbabc4b71334c5dd0ac6426424122c.zip
[analyzer] Add missing return after function pointer null check.
Also add some tests that there is actually a message and that the bug is actually a hard error. This actually behaved correctly before, because: - addTransition() doesn't actually add a transition if the new state is null; it assumes you want to propagate the predecessor forward and does nothing. - generateSink() is called in order to emit a bug report. - If at least one new node has been generated, the predecessor node is /not/ propagated forward. But now it's spelled out explicitly. Found by Richard Mazorodze, who's working on a patch that may require this. llvm-svn: 191805
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
index d5ab479ec3c..fefcbe7b09c 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
@@ -249,6 +249,7 @@ void CallAndMessageChecker::checkPreStmt(const CallExpr *CE,
BT_call_null.reset(
new BuiltinBug("Called function pointer is null (null dereference)"));
emitBadCall(BT_call_null.get(), C, Callee);
+ return;
}
C.addTransition(StNonNull);
OpenPOWER on IntegriCloud