parent
a4f898448c
commit
20ae1dbfd1
|
@ -780,28 +780,28 @@ void ExprEngine::Visit(const Stmt *S, ExplodedNode *Pred,
|
|||
break;
|
||||
}
|
||||
|
||||
case Stmt::CXXNewExprClass: {
|
||||
Bldr.takeNodes(Pred);
|
||||
ExplodedNodeSet PostVisit;
|
||||
VisitCXXNewExpr(cast<CXXNewExpr>(S), Pred, PostVisit);
|
||||
getCheckerManager().runCheckersForPostStmt(Dst, PostVisit, S, *this);
|
||||
Bldr.addNodes(Dst);
|
||||
break;
|
||||
}
|
||||
|
||||
case Stmt::CXXDeleteExprClass: {
|
||||
Bldr.takeNodes(Pred);
|
||||
ExplodedNodeSet PreVisit;
|
||||
const CXXDeleteExpr *CDE = cast<CXXDeleteExpr>(S);
|
||||
getCheckerManager().runCheckersForPreStmt(PreVisit, Pred, S, *this);
|
||||
|
||||
for (ExplodedNodeSet::iterator i = PreVisit.begin(),
|
||||
e = PreVisit.end(); i != e ; ++i)
|
||||
VisitCXXDeleteExpr(CDE, *i, Dst);
|
||||
|
||||
Bldr.addNodes(Dst);
|
||||
break;
|
||||
}
|
||||
case Stmt::CXXNewExprClass: {
|
||||
Bldr.takeNodes(Pred);
|
||||
ExplodedNodeSet PostVisit;
|
||||
VisitCXXNewExpr(cast<CXXNewExpr>(S), Pred, PostVisit);
|
||||
getCheckerManager().runCheckersForPostStmt(Dst, PostVisit, S, *this);
|
||||
Bldr.addNodes(Dst);
|
||||
break;
|
||||
}
|
||||
|
||||
case Stmt::CXXDeleteExprClass: {
|
||||
Bldr.takeNodes(Pred);
|
||||
ExplodedNodeSet PreVisit;
|
||||
const CXXDeleteExpr *CDE = cast<CXXDeleteExpr>(S);
|
||||
getCheckerManager().runCheckersForPreStmt(PreVisit, Pred, S, *this);
|
||||
|
||||
for (ExplodedNodeSet::iterator i = PreVisit.begin(),
|
||||
e = PreVisit.end(); i != e ; ++i)
|
||||
VisitCXXDeleteExpr(CDE, *i, Dst);
|
||||
|
||||
Bldr.addNodes(Dst);
|
||||
break;
|
||||
}
|
||||
// FIXME: ChooseExpr is really a constant. We need to fix
|
||||
// the CFG do not model them as explicit control-flow.
|
||||
|
||||
|
|
Loading…
Reference in New Issue