aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2012-10-31 22:17:48 +0000
committerAnna Zaks <ganna@apple.com>2012-10-31 22:17:48 +0000
commita57e8ffdba88643c2d934953b93a3be0a0a3f357 (patch)
tree9175974f4e4352a541d16931a6300e9e933ee4ee /clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
parent48baf7a788272d088cb90d7b53e3415bd860bdf9 (diff)
downloadllvm-a57e8ffdba88643c2d934953b93a3be0a0a3f357.zip
llvm-a57e8ffdba88643c2d934953b93a3be0a0a3f357.tar.gz
llvm-a57e8ffdba88643c2d934953b93a3be0a0a3f357.tar.bz2
[analyzer] Fix a bug in SimpleStreamChecker - return after sink.
Thanks Ted. llvm-svn: 167176
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
index 4fe01c3..d62002c 100644
--- a/clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
@@ -126,8 +126,10 @@ void SimpleStreamChecker::checkPreStmt(const CallExpr *Call,
// Check if the stream has already been closed.
ProgramStateRef State = C.getState();
const StreamState *SS = State->get<StreamMap>(FileDesc);
- if (SS && SS->isClosed())
+ if (SS && SS->isClosed()) {
reportDoubleClose(FileDesc, Call, C);
+ return;
+ }
// Generate the next transition, in which the stream is closed.
State = State->set<StreamMap>(FileDesc, StreamState::getClosed());