From 356279ca2de74b0deb274a8b16396bdaebfec92b Mon Sep 17 00:00:00 2001 From: Jordan Rose Date: Wed, 8 Aug 2012 18:23:31 +0000 Subject: [analyzer] Track malloc'd regions stored in structs. The main blocker on this (besides the previous commit) was that ScanReachableSymbols was not looking through LazyCompoundVals. Once that was fixed, it's easy enough to clear out malloc data on return, just like we do when we bind to a global region. llvm-svn: 161511 --- clang/lib/StaticAnalyzer/Core/ProgramState.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'clang/lib/StaticAnalyzer/Core/ProgramState.cpp') diff --git a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp index 9245a70dd2b..c20979bddb0 100644 --- a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp +++ b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp @@ -542,6 +542,9 @@ bool ScanReachableSymbols::scan(SVal val) { if (loc::MemRegionVal *X = dyn_cast(&val)) return scan(X->getRegion()); + if (nonloc::LazyCompoundVal *X = dyn_cast(&val)) + return scan(X->getRegion()); + if (nonloc::LocAsInteger *X = dyn_cast(&val)) return scan(X->getLoc()); -- cgit v1.2.3