From 7e18009a7a0b5b51efa5d8a045fe70c8c783255f Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Wed, 12 Jun 2013 07:45:04 +0000 Subject: Fix memory corruption in CStringChecker Summary: "register" functions for the checker were caching the checker objects in a static variable. This caused problems when the function is called with a different CheckerManager. Reviewers: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D955 llvm-svn: 183823 --- clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp') diff --git a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp index aa1ca6f2f80..932f6316b55 100644 --- a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp @@ -2018,10 +2018,7 @@ void CStringChecker::checkDeadSymbols(SymbolReaper &SR, #define REGISTER_CHECKER(name) \ void ento::register##name(CheckerManager &mgr) {\ - static CStringChecker *TheChecker = 0; \ - if (TheChecker == 0) \ - TheChecker = mgr.registerChecker(); \ - TheChecker->Filter.Check##name = true; \ + mgr.registerChecker()->Filter.Check##name = true; \ } REGISTER_CHECKER(CStringNullArg) -- cgit v1.2.3