diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/PointerArithChecker.cpp')
| -rw-r--r-- | contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/PointerArithChecker.cpp | 11 | 
1 files changed, 6 insertions, 5 deletions
| diff --git a/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/PointerArithChecker.cpp b/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/PointerArithChecker.cpp index 202522b1949c..fe4845bd8894 100644 --- a/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/PointerArithChecker.cpp +++ b/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/PointerArithChecker.cpp @@ -24,7 +24,7 @@ using namespace ento;  namespace {  class PointerArithChecker     : public Checker< check::PreStmt<BinaryOperator> > { -  mutable llvm::OwningPtr<BuiltinBug> BT; +  mutable OwningPtr<BuiltinBug> BT;  public:    void checkPreStmt(const BinaryOperator *B, CheckerContext &C) const; @@ -36,9 +36,10 @@ void PointerArithChecker::checkPreStmt(const BinaryOperator *B,    if (B->getOpcode() != BO_Sub && B->getOpcode() != BO_Add)      return; -  const ProgramState *state = C.getState(); -  SVal LV = state->getSVal(B->getLHS()); -  SVal RV = state->getSVal(B->getRHS()); +  ProgramStateRef state = C.getState(); +  const LocationContext *LCtx = C.getLocationContext(); +  SVal LV = state->getSVal(B->getLHS(), LCtx); +  SVal RV = state->getSVal(B->getRHS(), LCtx);    const MemRegion *LR = LV.getAsRegion(); @@ -50,7 +51,7 @@ void PointerArithChecker::checkPreStmt(const BinaryOperator *B,    if (isa<VarRegion>(LR) || isa<CodeTextRegion>(LR) ||         isa<CompoundLiteralRegion>(LR)) { -    if (ExplodedNode *N = C.generateNode()) { +    if (ExplodedNode *N = C.addTransition()) {        if (!BT)          BT.reset(new BuiltinBug("Dangerous pointer arithmetic",                              "Pointer arithmetic done on non-array variables " | 
