Browse Source

Merge pull request #35074 from GodotExplorer/lsp-fix-34147

Fix infinite loop error in document link parsing of GDScript Language Server
Rémi Verschelde 5 years ago
parent
commit
854a7bd9bb
1 changed files with 3 additions and 2 deletions
  1. 3 2
      modules/gdscript/language_server/gdscript_extend_parser.cpp

+ 3 - 2
modules/gdscript/language_server/gdscript_extend_parser.cpp

@@ -112,9 +112,10 @@ void ExtendGDScriptParser::update_document_links(const String &p_code) {
 	FileAccessRef fs = FileAccess::create(FileAccess::ACCESS_RESOURCES);
 	FileAccessRef fs = FileAccess::create(FileAccess::ACCESS_RESOURCES);
 	tokenizer.set_code(p_code);
 	tokenizer.set_code(p_code);
 	while (true) {
 	while (true) {
-		if (tokenizer.get_token() == GDScriptTokenizer::TK_EOF) {
+		GDScriptTokenizerText::Token token = tokenizer.get_token();
+		if (token == GDScriptTokenizer::TK_EOF || token == GDScriptTokenizer::TK_ERROR) {
 			break;
 			break;
-		} else if (tokenizer.get_token() == GDScriptTokenizer::TK_CONSTANT) {
+		} else if (token == GDScriptTokenizer::TK_CONSTANT) {
 			const Variant &const_val = tokenizer.get_token_constant();
 			const Variant &const_val = tokenizer.get_token_constant();
 			if (const_val.get_type() == Variant::STRING) {
 			if (const_val.get_type() == Variant::STRING) {
 				String path = const_val;
 				String path = const_val;