diff options
author | Nikolai Kosjar <[email protected]> | 2017-08-07 12:36:22 +0200 |
---|---|---|
committer | Nikolai Kosjar <[email protected]> | 2017-08-08 07:03:59 +0000 |
commit | 63e16d6346c2525fc93234437c9a1f2d7da63f34 (patch) | |
tree | b5ad971d3cd660a397a6c81cbae3db1f9feaf564 /src/libs/cplusplus | |
parent | 58aef639594de8f7e0593fa48fc41a2a04a69544 (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.cpp | 2 |
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); |