diff options
author | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-03-07 15:21:04 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-03-12 08:29:48 +0100 |
commit | 29055f9f43b21262b14e5d02af64be4204df6105 (patch) | |
tree | 5891749c963cb5e3617fa4ca2521c36160bed910 /src/libs/cplusplus/ResolveExpression.cpp | |
parent | de489ad4cf34aa985e509da633954aa3fe7b9393 (diff) | |
download | qt-creator-29055f9f43b21262b14e5d02af64be4204df6105.tar.gz |
C++: Fix crash due to dangling pointer
ResolveExpression used the wrong Control object, which was deleted by
~LookupContext() in TypeOfExpression::operator()). ~Control() led to the
dangling pointer.
Task-number: QTCREATORBUG-8890
Done-with: Erik Verbruggen <erik.verbruggen@digia.com>
Change-Id: Ic07947ee54087446b730e4d3ec4bef29defa4495
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/libs/cplusplus/ResolveExpression.cpp')
-rw-r--r-- | src/libs/cplusplus/ResolveExpression.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp index db69deb0ed..b547c22d68 100644 --- a/src/libs/cplusplus/ResolveExpression.cpp +++ b/src/libs/cplusplus/ResolveExpression.cpp @@ -548,7 +548,7 @@ bool ResolveExpression::visit(SimpleNameAST *ast) if (typeItems.empty()) continue; - CPlusPlus::Clone cloner(_context.control().data()); + CPlusPlus::Clone cloner(_context.bindings()->control().data()); for (int n = 0; n < typeItems.size(); ++ n) { FullySpecifiedType newType = cloner.type(typeItems[n].type(), 0); @@ -1061,7 +1061,8 @@ ClassOrNamespace *ResolveExpression::baseExpression(const QList<LookupItem> &bas FullySpecifiedType ResolveExpression::instantiate(const Name *className, Symbol *candidate) const { - return DeprecatedGenTemplateInstance::instantiate(className, candidate, _context.control()); + return DeprecatedGenTemplateInstance::instantiate(className, candidate, + _context.bindings()->control()); } bool ResolveExpression::visit(PostIncrDecrAST *ast) |