summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/ResolveExpression.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@digia.com>2013-03-07 15:21:04 +0100
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-03-12 08:29:48 +0100
commit29055f9f43b21262b14e5d02af64be4204df6105 (patch)
tree5891749c963cb5e3617fa4ca2521c36160bed910 /src/libs/cplusplus/ResolveExpression.cpp
parentde489ad4cf34aa985e509da633954aa3fe7b9393 (diff)
downloadqt-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.cpp5
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)