aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/cplusplus
diff options
context:
space:
mode:
authorNikolai Kosjar <[email protected]>2017-08-07 12:36:22 +0200
committerNikolai Kosjar <[email protected]>2017-08-08 07:03:59 +0000
commit63e16d6346c2525fc93234437c9a1f2d7da63f34 (patch)
treeb5ad971d3cd660a397a6c81cbae3db1f9feaf564 /src/libs/cplusplus
parent58aef639594de8f7e0593fa48fc41a2a04a69544 (diff)
C++: Limit number of nested class instantiations
...to avoid out of memory crashes. Task-number: QTCREATORBUG-18649 Change-Id: I5e121bf4be0fd0c01a97a182ed07ee7552fb68ac Reviewed-by: Przemyslaw Gorszkowski <[email protected]> Reviewed-by: Orgad Shaneh <[email protected]>
Diffstat (limited to 'src/libs/cplusplus')
-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 0e9fccead2d..3f09e7b1a2d 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);