From: Zhongxing Xu Date: Thu, 24 Jun 2010 12:52:28 +0000 (+0000) Subject: Let StreamChecker::CheckNullStream() return a GRState after successful check. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=12d213d9c15e376e36c26555bbb426dede870554;p=clang 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 --- 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(&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; }