diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-01-27 16:17:11 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-01-27 16:17:11 +0000 |
| commit | add754a02edaa7ab44ce1e0ed731fdf1739133ec (patch) | |
| tree | 7ce7fa1cfc4dd9c418f299575744700e74436d80 /clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp | |
| parent | 9f32cfd35e831aa7c381bdb8727ebc389d8f177f (diff) | |
| download | bcm5719-llvm-add754a02edaa7ab44ce1e0ed731fdf1739133ec.tar.gz bcm5719-llvm-add754a02edaa7ab44ce1e0ed731fdf1739133ec.zip | |
[analyzer] Fix crash when handling dot syntax on 'super'.
llvm-svn: 124376
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp')
| -rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp index 8ad094b1d3b..79d2a2b2fc0 100644 --- a/clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp @@ -2073,12 +2073,13 @@ void ExprEngine::VisitCall(const CallExpr* CE, ExplodedNode* Pred, void ExprEngine::VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *Ex, ExplodedNode *Pred, ExplodedNodeSet &Dst) { - - // Visit the base expression, which is needed for computing the lvalue - // of the ivar. ExplodedNodeSet dstBase; - const Expr *baseExpr = Ex->getBase(); - Visit(baseExpr, Pred, dstBase); + + // Visit the receiver (if any). + if (Ex->isObjectReceiver()) + Visit(Ex->getBase(), Pred, dstBase); + else + dstBase = Pred; ExplodedNodeSet dstPropRef; @@ -2087,7 +2088,6 @@ void ExprEngine::VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *Ex, I!=E; ++I) { ExplodedNode *nodeBase = *I; const GRState *state = GetState(nodeBase); - SVal baseVal = state->getSVal(baseExpr); MakeNode(dstPropRef, Ex, *I, state->BindExpr(Ex, loc::ObjCPropRef(Ex))); } |

