diff options
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp index 0575be845374..3547b7bb61a2 100644 --- a/clang/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp @@ -116,13 +116,14 @@ void ObjCSuperDeallocChecker::checkPostObjCMessage(const ObjCMethodCall &M, return; ProgramStateRef State = C.getState(); - SymbolRef ReceiverSymbol = M.getSelfSVal().getAsSymbol(); - assert(ReceiverSymbol && "No receiver symbol at call to [super dealloc]?"); + const LocationContext *LC = C.getLocationContext(); + SymbolRef SelfSymbol = State->getSelfSVal(LC).getAsSymbol(); + assert(SelfSymbol && "No receiver symbol at call to [super dealloc]?"); // We add this transition in checkPostObjCMessage to avoid warning when // we inline a call to [super dealloc] where the inlined call itself // calls [super dealloc]. - State = State->add<CalledSuperDealloc>(ReceiverSymbol); + State = State->add<CalledSuperDealloc>(SelfSymbol); C.addTransition(State); } @@ -284,6 +285,6 @@ void ento::registerObjCSuperDeallocChecker(CheckerManager &Mgr) { Mgr.registerChecker<ObjCSuperDeallocChecker>(); } -bool ento::shouldRegisterObjCSuperDeallocChecker(const LangOptions &LO) { +bool ento::shouldRegisterObjCSuperDeallocChecker(const CheckerManager &mgr) { return true; } |