diff --git a/Userland/Libraries/LibCore/Object.cpp b/Userland/Libraries/LibCore/Object.cpp index 8df07836c0..50b4091f71 100644 --- a/Userland/Libraries/LibCore/Object.cpp +++ b/Userland/Libraries/LibCore/Object.cpp @@ -258,7 +258,7 @@ static HashMap& object_classes() return *map; } -ObjectClassRegistration::ObjectClassRegistration(StringView class_name, Function()> factory, ObjectClassRegistration* parent_class) +ObjectClassRegistration::ObjectClassRegistration(StringView class_name, Function()> factory, ObjectClassRegistration* parent_class) : m_class_name(class_name) , m_factory(move(factory)) , m_parent_class(parent_class) diff --git a/Userland/Libraries/LibCore/Object.h b/Userland/Libraries/LibCore/Object.h index 6fbbf1918d..16efc5365c 100644 --- a/Userland/Libraries/LibCore/Object.h +++ b/Userland/Libraries/LibCore/Object.h @@ -32,12 +32,12 @@ class ObjectClassRegistration { AK_MAKE_NONMOVABLE(ObjectClassRegistration); public: - ObjectClassRegistration(StringView class_name, Function()> factory, ObjectClassRegistration* parent_class = nullptr); + ObjectClassRegistration(StringView class_name, Function()> factory, ObjectClassRegistration* parent_class = nullptr); ~ObjectClassRegistration(); String class_name() const { return m_class_name; } const ObjectClassRegistration* parent_class() const { return m_parent_class; } - NonnullRefPtr construct() const { return m_factory(); } + RefPtr construct() const { return m_factory(); } bool is_derived_from(const ObjectClassRegistration& base_class) const; static void for_each(Function); @@ -45,7 +45,7 @@ public: private: StringView m_class_name; - Function()> m_factory; + Function()> m_factory; ObjectClassRegistration* m_parent_class { nullptr }; }; diff --git a/Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp b/Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp index 2b74356de9..22c404ddef 100644 --- a/Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp +++ b/Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp @@ -145,10 +145,11 @@ void GMLAutocompleteProvider::provide_completions(Function)> } auto registration = Core::ObjectClassRegistration::find(class_names.last()); if (registration && registration->is_derived_from(widget_class)) { - auto instance = registration->construct(); - for (auto& it : instance->properties()) { - if (it.key.starts_with(identifier_string)) - identifier_entries.empend(it.key, identifier_string.length()); + if (auto instance = registration->construct()) { + for (auto& it : instance->properties()) { + if (it.key.starts_with(identifier_string)) + identifier_entries.empend(it.key, identifier_string.length()); + } } } if (can_have_declared_layout(class_names.last()) && "layout"sv.starts_with(identifier_string)) @@ -169,10 +170,11 @@ void GMLAutocompleteProvider::provide_completions(Function)> if (!class_names.is_empty()) { auto registration = Core::ObjectClassRegistration::find(class_names.last()); if (registration && registration->is_derived_from(widget_class)) { - auto instance = registration->construct(); - for (auto& it : instance->properties()) { - if (!it.value->is_readonly()) - identifier_entries.empend(it.key, 0u); + if (auto instance = registration->construct()) { + for (auto& it : instance->properties()) { + if (!it.value->is_readonly()) + identifier_entries.empend(it.key, 0u); + } } } }