summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2012-10-30 04:17:40 +0000
committerAnna Zaks <ganna@apple.com>2012-10-30 04:17:40 +0000
commit302da83fc2890d4dcef9dcd49ae247c47fd208b5 (patch)
tree2792c6e5e6e99a2a980907cb9db8fbcdbc8806cd /clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
parent4afaaf228ccbf447d84a2713f54dcd15913d9df4 (diff)
downloadbcm5719-llvm-302da83fc2890d4dcef9dcd49ae247c47fd208b5.tar.gz
bcm5719-llvm-302da83fc2890d4dcef9dcd49ae247c47fd208b5.zip
[analyzer] Fix a bug in REGISTER_MAP_WITH_PROGRAMSTATE
The ImmutableMap should not be the key into the GDM map as there could be several entries with the same map type. Thanks, Jordan. This complicates the usage of the macro a bit. When we want to retrieve the whole map, we need to use another name. Currently, I set it to be Name ## Ty as in "type of the map we are storing in the ProgramState". llvm-svn: 167000
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
index 50b9fe02d10..5721b1041ea 100644
--- a/clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
@@ -106,9 +106,7 @@ void SimpleStreamChecker::checkPreStmt(const CallExpr *Call,
CheckerContext &C) const {
initIdentifierInfo(C.getASTContext());
- if (C.getCalleeIdentifier(Call) != IIfclose)
- return;
- if (Call->getNumArgs() != 1)
+ if (C.getCalleeIdentifier(Call) != IIfclose || Call->getNumArgs() != 1)
return;
// Get the symbolic value corresponding to the file handle.
@@ -130,9 +128,9 @@ void SimpleStreamChecker::checkPreStmt(const CallExpr *Call,
void SimpleStreamChecker::checkDeadSymbols(SymbolReaper &SymReaper,
CheckerContext &C) const {
ProgramStateRef State = C.getState();
- StreamMap TrackedStreams = State->get<StreamMap>();
+ StreamMapTy TrackedStreams = State->get<StreamMap>();
SymbolVector LeakedStreams;
- for (StreamMap::iterator I = TrackedStreams.begin(),
+ for (StreamMapTy::iterator I = TrackedStreams.begin(),
E = TrackedStreams.end(); I != E; ++I) {
SymbolRef Sym = I->first;
if (SymReaper.isDead(Sym)) {
@@ -154,9 +152,9 @@ void SimpleStreamChecker::checkDeadSymbols(SymbolReaper &SymReaper,
ProgramStateRef SimpleStreamChecker::evalAssume(ProgramStateRef State,
SVal Cond,
bool Assumption) const {
- StreamMap TrackedStreams = State->get<StreamMap>();
+ StreamMapTy TrackedStreams = State->get<StreamMap>();
SymbolVector LeakedStreams;
- for (StreamMap::iterator I = TrackedStreams.begin(),
+ for (StreamMapTy::iterator I = TrackedStreams.begin(),
E = TrackedStreams.end(); I != E; ++I) {
SymbolRef Sym = I->first;
if (State->getConstraintManager().isNull(State, Sym).isTrue())
OpenPOWER on IntegriCloud