diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-03-07 22:04:39 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-03-07 22:04:39 +0000 |
commit | 6e40035988965340555c942d6e7afb6c7527beb1 (patch) | |
tree | e90c64206cd9ac32d5ece08586be412e07f2969c /lib/Analysis/CFG.cpp | |
parent | 6d1155be2aca28659a47fbe612222845811ff2a3 (diff) |
Fix null dereference in CFGBlock::FilterEdge that was reported in PR 9412.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127176 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/CFG.cpp')
-rw-r--r-- | lib/Analysis/CFG.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/Analysis/CFG.cpp b/lib/Analysis/CFG.cpp index 833d583907..fa98f94057 100644 --- a/lib/Analysis/CFG.cpp +++ b/lib/Analysis/CFG.cpp @@ -2927,15 +2927,15 @@ unsigned CFG::getNumBlkExprs() { bool CFGBlock::FilterEdge(const CFGBlock::FilterOptions &F, const CFGBlock *From, const CFGBlock *To) { - if (F.IgnoreDefaultsWithCoveredEnums) { + if (To && F.IgnoreDefaultsWithCoveredEnums) { // If the 'To' has no label or is labeled but the label isn't a // CaseStmt then filter this edge. if (const SwitchStmt *S = - dyn_cast_or_null<SwitchStmt>(From->getTerminator().getStmt())) { + dyn_cast_or_null<SwitchStmt>(From->getTerminator().getStmt())) { if (S->isAllEnumCasesCovered()) { - const Stmt *L = To->getLabel(); - if (!L || !isa<CaseStmt>(L)) - return true; + const Stmt *L = To->getLabel(); + if (!L || !isa<CaseStmt>(L)) + return true; } } } |