aboutsummaryrefslogtreecommitdiff
path: root/lib/Checker/StreamChecker.cpp
diff options
context:
space:
mode:
authorZhongxing Xu <xuzhongxing@gmail.com>2010-06-24 12:52:28 +0000
committerZhongxing Xu <xuzhongxing@gmail.com>2010-06-24 12:52:28 +0000
commit12d213d9c15e376e36c26555bbb426dede870554 (patch)
tree498522e582fefbca8d7cde367be6e5b5e8c21f17 /lib/Checker/StreamChecker.cpp
parent7197d40a649e1304805850c516e0d2fb8a2a7664 (diff)
Let StreamChecker::CheckNullStream() return a GRState after successful check.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106738 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Checker/StreamChecker.cpp')
-rw-r--r--lib/Checker/StreamChecker.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/lib/Checker/StreamChecker.cpp b/lib/Checker/StreamChecker.cpp
index a7b2ced2b7..1bd43f384c 100644
--- a/lib/Checker/StreamChecker.cpp
+++ b/lib/Checker/StreamChecker.cpp
@@ -58,7 +58,8 @@ private:
void Fileno(CheckerContext &C, const CallExpr *CE);
// Return true indicates the stream pointer is NULL.
- bool CheckNullStream(SVal SV, const GRState *state, CheckerContext &C);
+ const GRState *CheckNullStream(SVal SV, const GRState *state,
+ CheckerContext &C);
};
} // end anonymous namespace
@@ -173,71 +174,71 @@ void StreamChecker::Fopen(CheckerContext &C, const CallExpr *CE) {
void StreamChecker::Fread(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(3)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(3)), state, C))
return;
}
void StreamChecker::Fwrite(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(3)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(3)), state, C))
return;
}
void StreamChecker::Fseek(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
return;
}
void StreamChecker::Ftell(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
return;
}
void StreamChecker::Rewind(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
return;
}
void StreamChecker::Fgetpos(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
return;
}
void StreamChecker::Fsetpos(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
return;
}
void StreamChecker::Clearerr(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
return;
}
void StreamChecker::Feof(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
return;
}
void StreamChecker::Ferror(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
return;
}
void StreamChecker::Fileno(CheckerContext &C, const CallExpr *CE) {
const GRState *state = C.getState();
- if (CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
+ if (!CheckNullStream(state->getSVal(CE->getArg(0)), state, C))
return;
}
-bool StreamChecker::CheckNullStream(SVal SV, const GRState *state,
+const GRState *StreamChecker::CheckNullStream(SVal SV, const GRState *state,
CheckerContext &C) {
const DefinedSVal *DV = dyn_cast<DefinedSVal>(&SV);
if (!DV)
@@ -255,7 +256,7 @@ bool StreamChecker::CheckNullStream(SVal SV, const GRState *state,
BugReport *R =new BugReport(*BT_nullfp, BT_nullfp->getDescription(), N);
C.EmitReport(R);
}
- return true;
+ return 0;
}
- return false;
+ return stateNull;
}