summaryrefslogtreecommitdiff
path: root/editor/editor_help_search.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/editor_help_search.cpp')
-rw-r--r--editor/editor_help_search.cpp27
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);
+ }
}
}