break;
}
- case Stmt::CXXNewExprClass: {
- Bldr.takeNodes(Pred);
- const CXXNewExpr *NE = cast<CXXNewExpr>(S);
- VisitCXXNewExpr(NE, Pred, Dst);
- Bldr.addNodes(Dst);
- break;
- }
-
- case Stmt::CXXDeleteExprClass: {
- Bldr.takeNodes(Pred);
- const CXXDeleteExpr *CDE = cast<CXXDeleteExpr>(S);
- VisitCXXDeleteExpr(CDE, Pred, Dst);
- Bldr.addNodes(Dst);
- break;
- }
+ case Stmt::CXXNewExprClass: {\r
+ Bldr.takeNodes(Pred);\r
+ ExplodedNodeSet PostVisit;\r
+ VisitCXXNewExpr(cast<CXXNewExpr>(S), Pred, PostVisit);\r
+ getCheckerManager().runCheckersForPostStmt(Dst, PostVisit, S, *this);\r
+ Bldr.addNodes(Dst);\r
+ break;\r
+ }\r
+\r
+ case Stmt::CXXDeleteExprClass: {\r
+ Bldr.takeNodes(Pred);\r
+ ExplodedNodeSet PreVisit;\r
+ const CXXDeleteExpr *CDE = cast<CXXDeleteExpr>(S);\r
+ getCheckerManager().runCheckersForPreStmt(PreVisit, Pred, S, *this);\r
+\r
+ for (ExplodedNodeSet::iterator i = PreVisit.begin(), \r
+ e = PreVisit.end(); i != e ; ++i)\r
+ VisitCXXDeleteExpr(CDE, *i, Dst);\r
+\r
+ Bldr.addNodes(Dst);\r
+ break;\r
+ }\r
// FIXME: ChooseExpr is really a constant. We need to fix
// the CFG do not model them as explicit control-flow.