Skip to content

Commit 57ce740

Browse files
committed
fix(languages/java): avoid infinite stack overflow for FindSymbol
1 parent bd33cc1 commit 57ce740

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

languages/java/language.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,15 @@ func (an *javaAnalyzer) FallbackSymbol() lib.Symbol {
5151
}
5252

5353
func (an *javaAnalyzer) FindSymbol(name string) lib.Symbol {
54+
return an.findSymbolWithRetries(name, 0)
55+
}
56+
57+
func (an *javaAnalyzer) findSymbolWithRetries(name string, retry int) lib.Symbol {
58+
if retry > 3 {
59+
// do not retry more than 3 times or it will cause stack overflow
60+
return lib.UnresolvedSymbol
61+
}
62+
5463
sym, ok := builtinTypesStore.FindByName(name)
5564
if ok {
5665
return sym
@@ -86,7 +95,7 @@ func (an *javaAnalyzer) FindSymbol(name string) lib.Symbol {
8695
}
8796

8897
// if parsed, find the symbol again
89-
return an.FindSymbol(name)
98+
return an.findSymbolWithRetries(name, retry+1)
9099
}
91100

92101
func (an *javaAnalyzer) markAsUnresolved(name string) lib.Symbol {

0 commit comments

Comments
 (0)