From 8aa0195243bb715768333d3fbd3d03700c567ac8 Mon Sep 17 00:00:00 2001 From: Andrew Ferguson Date: Wed, 16 May 2007 07:04:54 +0000 Subject: [PATCH] 185828: add workaround which limits recursion depth of symbol look-up in class hierarchy --- .../index/tests/IndexCPPBindingResolutionBugs.java | 2 +- .../cdt/internal/core/dom/parser/cpp/CPPSemantics.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java index bca19402d2b..65726c27035 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java @@ -60,7 +60,7 @@ public class IndexCPPBindingResolutionBugs extends IndexBindingResolutionTestBas // void foo() { // C::unresolvable(); // }; - public void _test185828() throws Exception { + public void test185828() throws Exception { // Bug 185828 reports a StackOverflowException is thrown before we get here. // That the SOE is thrown is detected in BaseTestCase via an Error IStatus diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java index ede31b12da7..6f0c15ab938 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java @@ -1170,7 +1170,12 @@ public class CPPSemantics { data.inheritanceChain = new ObjectSet( 2 ); data.inheritanceChain.put( lookIn ); - + + // workaround to fix 185828 + if(data.inheritanceChain.size() > 20) { + return null; + } + int size = bases.length; for( int i = 0; i < size; i++ ) {