diff options
author | Joel E. Denny <jdenny.ornl@gmail.com> | 2018-03-13 14:51:22 +0000 |
---|---|---|
committer | Joel E. Denny <jdenny.ornl@gmail.com> | 2018-03-13 14:51:22 +0000 |
commit | 8150810556479b04e00578c9d7d4c30814898694 (patch) | |
tree | 459599c964149019a07d0e26c4dfe14dfc441f3c /clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp | |
parent | 204edeca5661d7dc80139d43507a0e268afff330 (diff) | |
download | bcm5719-llvm-8150810556479b04e00578c9d7d4c30814898694.tar.gz bcm5719-llvm-8150810556479b04e00578c9d7d4c30814898694.zip |
Reland "[Attr] Fix parameter indexing for several attributes"
Relands r326602 (reverted in r326862) with new test and fix for
PR36620.
Differential Revision: https://reviews.llvm.org/D43248
llvm-svn: 327405
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp index 7b644d4dadf..a3da79e798d 100644 --- a/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp @@ -1231,9 +1231,10 @@ MallocChecker::MallocMemReturnsAttr(CheckerContext &C, const CallExpr *CE, if (Att->getModule() != II_malloc) return nullptr; - OwnershipAttr::args_iterator I = Att->args_begin(), E = Att->args_end(); + ParamIdx *I = Att->args_begin(), *E = Att->args_end(); if (I != E) { - return MallocMemAux(C, CE, CE->getArg(*I), UndefinedVal(), State); + return MallocMemAux(C, CE, CE->getArg(I->getASTIndex()), UndefinedVal(), + State); } return MallocMemAux(C, CE, UnknownVal(), UndefinedVal(), State); } @@ -1331,9 +1332,9 @@ ProgramStateRef MallocChecker::FreeMemAttr(CheckerContext &C, bool ReleasedAllocated = false; for (const auto &Arg : Att->args()) { - ProgramStateRef StateI = FreeMemAux(C, CE, State, Arg, - Att->getOwnKind() == OwnershipAttr::Holds, - ReleasedAllocated); + ProgramStateRef StateI = FreeMemAux( + C, CE, State, Arg.getASTIndex(), + Att->getOwnKind() == OwnershipAttr::Holds, ReleasedAllocated); if (StateI) State = StateI; } |