]> granicus.if.org Git - clang/commitdiff
Let StreamChecker::CheckNullStream() return a GRState after successful check.
authorZhongxing Xu <xuzhongxing@gmail.com>
Thu, 24 Jun 2010 12:52:28 +0000 (12:52 +0000)
committerZhongxing Xu <xuzhongxing@gmail.com>
Thu, 24 Jun 2010 12:52:28 +0000 (12:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106738 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Checker/StreamChecker.cpp

index a7b2ced2b7847889826868f46acaa0b5b5f005b3..1bd43f384c924992249851390318bbeaa6f96e0f 100644 (file)
@@ -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;
 }