From 070d63496622bfd87f98c8f49669b87756906834 Mon Sep 17 00:00:00 2001 From: Francois Belair Date: Fri, 6 Aug 2021 14:55:05 -0400 Subject: Fix LSP completion crashing on scene-less scripts --- .../language_server/gdscript_workspace.cpp | 28 ++++++++++++---------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'modules/gdscript/language_server/gdscript_workspace.cpp') diff --git a/modules/gdscript/language_server/gdscript_workspace.cpp b/modules/gdscript/language_server/gdscript_workspace.cpp index 4fc229a0f8..1512b4bb89 100644 --- a/modules/gdscript/language_server/gdscript_workspace.cpp +++ b/modules/gdscript/language_server/gdscript_workspace.cpp @@ -523,22 +523,24 @@ void GDScriptWorkspace::completion(const lsp::CompletionParams &p_params, List script = current->get_script(); - if (script.is_valid() && script->get_path() == path) { - break; - } - for (int i = 0; i < current->get_child_count(); ++i) { - stack.push_back(current->get_child(i)); + while (!stack.is_empty()) { + current = stack.pop_back(); + Ref script = current->get_script(); + if (script.is_valid() && script->get_path() == path) { + break; + } + for (int i = 0; i < current->get_child_count(); ++i) { + stack.push_back(current->get_child(i)); + } } - } - Ref script = current->get_script(); - if (!script.is_valid() || script->get_path() != path) { - current = owner_scene_node; + Ref script = current->get_script(); + if (!script.is_valid() || script->get_path() != path) { + current = owner_scene_node; + } } String code = parser->get_text_for_completion(p_params.position); -- cgit v1.2.3