Keep GDScriptAnalyzer alive for whole parse()

Analyzed data is allocated by Parser but kept as a reference in the cache
which in turn is held by the Analyzer. If Analyzer goes away Parser is left
with a tree of dangling references.

Code is analogous to all other usages of Analyzer + Parser pair.
This commit is contained in:
Bartosz Bielecki 2022-12-05 14:45:19 +01:00
parent d759210f52
commit 2af4f7f762

View file

@ -844,8 +844,9 @@ Error ExtendGDScriptParser::parse(const String &p_code, const String &p_path) {
lines = p_code.split("\n");
Error err = GDScriptParser::parse(p_code, p_path, false);
GDScriptAnalyzer analyzer(this);
if (err == OK) {
GDScriptAnalyzer analyzer(this);
err = analyzer.analyze();
}
update_diagnostics();