diff options
Diffstat (limited to 'editor/editor_help_search.cpp')
-rw-r--r-- | editor/editor_help_search.cpp | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/editor/editor_help_search.cpp b/editor/editor_help_search.cpp index d6ed2297c7..f454ba2c41 100644 --- a/editor/editor_help_search.cpp +++ b/editor/editor_help_search.cpp @@ -323,16 +323,17 @@ bool EditorHelpSearch::Runner::_phase_match_classes_init() { bool EditorHelpSearch::Runner::_phase_match_classes() { DocData::ClassDoc &class_doc = iterator_doc->value; + if (class_doc.name.is_empty()) { + return false; + } if (!_is_class_disabled_by_feature_profile(class_doc.name)) { - matches[class_doc.name] = ClassMatch(); - ClassMatch &match = matches[class_doc.name]; - + ClassMatch match; match.doc = &class_doc; // Match class name. if (search_flags & SEARCH_CLASSES) { // If the search term is empty, add any classes which are not script docs or which don't start with - // a double-quotation. This will ensure that only C++ classes and explictly named classes will + // a double-quotation. This will ensure that only C++ classes and explicitly named classes will // be added. match.name = (term.is_empty() && (!class_doc.is_script_doc || class_doc.name[0] != '\"')) || _match_string(term, class_doc.name); } @@ -400,6 +401,7 @@ bool EditorHelpSearch::Runner::_phase_match_classes() { } } } + matches[class_doc.name] = match; } matches[class_doc.name] = match; } @@ -419,6 +421,9 @@ bool EditorHelpSearch::Runner::_phase_class_items_init() { } bool EditorHelpSearch::Runner::_phase_class_items() { + if (!iterator_match) { + return false; + } ClassMatch &match = iterator_match->value; if (search_flags & SEARCH_SHOW_HIERARCHY) { @@ -444,6 +449,13 @@ bool EditorHelpSearch::Runner::_phase_member_items_init() { bool EditorHelpSearch::Runner::_phase_member_items() { ClassMatch &match = iterator_match->value; + if (!match.doc) { + return false; + } + if (match.doc->name.is_empty()) { + return false; + } + TreeItem *parent = (search_flags & SEARCH_SHOW_HIERARCHY) ? class_items[match.doc->name] : root_item; bool constructor_created = false; for (int i = 0; i < match.methods.size(); i++) { @@ -511,6 +523,9 @@ void EditorHelpSearch::Runner::_match_item(TreeItem *p_item, const String &p_tex } TreeItem *EditorHelpSearch::Runner::_create_class_hierarchy(const ClassMatch &p_match) { + if (p_match.doc->name.is_empty()) { + return nullptr; + } if (class_items.has(p_match.doc->name)) { return class_items[p_match.doc->name]; } @@ -522,7 +537,9 @@ TreeItem *EditorHelpSearch::Runner::_create_class_hierarchy(const ClassMatch &p_ parent = class_items[p_match.doc->inherits]; } else { ClassMatch &base_match = matches[p_match.doc->inherits]; - parent = _create_class_hierarchy(base_match); + if (base_match.doc) { + parent = _create_class_hierarchy(base_match); + } } } |