summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2017-08-07 12:36:22 +0200
committerNikolai Kosjar <nikolai.kosjar@qt.io>2017-08-08 07:03:59 +0000
commit63e16d6346c2525fc93234437c9a1f2d7da63f34 (patch)
treeb5ad971d3cd660a397a6c81cbae3db1f9feaf564
parent58aef639594de8f7e0593fa48fc41a2a04a69544 (diff)
downloadqt-creator-63e16d6346c2525fc93234437c9a1f2d7da63f34.tar.gz
C++: Limit number of nested class instantiations
...to avoid out of memory crashes. Task-number: QTCREATORBUG-18649 Change-Id: I5e121bf4be0fd0c01a97a182ed07ee7552fb68ac Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
-rw-r--r--src/libs/cplusplus/LookupContext.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index 0e9fccead2..3f09e7b1a2 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -1387,6 +1387,8 @@ void ClassOrNamespace::instantiateNestedClasses(ClassOrNamespace *enclosingTempl
void ClassOrNamespace::NestedClassInstantiator::instantiate(ClassOrNamespace *enclosingTemplateClass,
ClassOrNamespace *enclosingTemplateClassInstantiation)
{
+ if (_alreadyConsideredNestedClassInstantiations.size() >= 3)
+ return;
if (_alreadyConsideredNestedClassInstantiations.contains(enclosingTemplateClass))
return;
_alreadyConsideredNestedClassInstantiations.insert(enclosingTemplateClass);